支持实验数据拉取

This commit is contained in:
2025-10-16 10:09:20 +08:00
parent d7ab7b5156
commit df62e4fae6
5 changed files with 771 additions and 89 deletions

446
cmd.pb.go
View File

@@ -1,6 +1,6 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.36.8
// protoc-gen-go v1.36.9
// protoc v5.29.4
// source: cmd.proto
@@ -26,8 +26,8 @@ type BindType int32
const (
BindType_UnknownBindType BindType = 0
BindType_AdgroupId BindType = 1 //广告
BindType_AccountId BindType = 3 //广告主
BindType_AdgroupId BindType = 1 // 广告
BindType_AccountId BindType = 3 // 广告主
)
// Enum value maps for BindType.
@@ -75,11 +75,11 @@ func (BindType) EnumDescriptor() ([]byte, []int) {
type BindSourceType int32
const (
BindSourceType_DefaultBindSourceType BindSourceType = 0 //广告主或未填写
BindSourceType_ThirdPartyApi BindSourceType = 1 //第三方API
BindSourceType_ADQ BindSourceType = 2 //ADQ平台
BindSourceType_MP BindSourceType = 3 //MP平台
BindSourceType_MktApi BindSourceType = 4 //MarketingAPI
BindSourceType_DefaultBindSourceType BindSourceType = 0 // 广告主或未填写
BindSourceType_ThirdPartyApi BindSourceType = 1 // 第三方API
BindSourceType_ADQ BindSourceType = 2 // ADQ平台
BindSourceType_MP BindSourceType = 3 // MP平台
BindSourceType_MktApi BindSourceType = 4 // MarketingAPI
)
// Enum value maps for BindSourceType.
@@ -157,6 +157,7 @@ const (
ErrorCode_DATA_ERROR ErrorCode = 201 // 数据错误
ErrorCode_CMD_ERROR ErrorCode = 202 // 命令行执行错误
ErrorCode_API_ERROR ErrorCode = 301 // 调用内部API错误
ErrorCode_TARGET_ERROR ErrorCode = 401 // Target参数错误
)
// Enum value maps for ErrorCode.
@@ -188,6 +189,7 @@ var (
201: "DATA_ERROR",
202: "CMD_ERROR",
301: "API_ERROR",
401: "TARGET_ERROR",
}
ErrorCode_value = map[string]int32{
"SUCC": 0,
@@ -216,6 +218,7 @@ var (
"DATA_ERROR": 201,
"CMD_ERROR": 202,
"API_ERROR": 301,
"TARGET_ERROR": 401,
}
)
@@ -1043,11 +1046,9 @@ func (x *WriteItem) GetWriteFlagsWithExpire() *FlagsWithExpire {
// Bytes 写入byte区域
type Bytes struct {
state protoimpl.MessageState `protogen:"open.v1"`
Bytes []byte `protobuf:"bytes,1,opt,name=bytes,proto3" json:"bytes,omitempty"` // 写入的byte
Index_1 uint64 `protobuf:"varint,2,opt,name=index_1,json=index1,proto3" json:"index_1,omitempty"` // 写入byte的索引值(0..63)
// Deprecated: Marked as deprecated in cmd.proto.
Index_2 uint64 `protobuf:"varint,3,opt,name=index_2,json=index2,proto3" json:"index_2,omitempty"` // **已弃用 写入byte的索引值(64..127)
state protoimpl.MessageState `protogen:"open.v1"`
Bytes []byte `protobuf:"bytes,1,opt,name=bytes,proto3" json:"bytes,omitempty"` // 写入的byte
Index_1 uint64 `protobuf:"varint,2,opt,name=index_1,json=index1,proto3" json:"index_1,omitempty"` // 写入byte的索引值(0..63)
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
@@ -1096,14 +1097,6 @@ func (x *Bytes) GetIndex_1() uint64 {
return 0
}
// Deprecated: Marked as deprecated in cmd.proto.
func (x *Bytes) GetIndex_2() uint64 {
if x != nil {
return x.Index_2
}
return 0
}
// Uint32s 写入uint32区域
type Uint32S struct {
state protoimpl.MessageState `protogen:"open.v1"`
@@ -2094,10 +2087,26 @@ func (*ExpList) Descriptor() ([]byte, []int) {
}
// ExpGet 获取实验报表
// select base_fields, {EXT_FIELDS}
// where day between {WHERE_BEGIN_DAY} and {WHERE_END_DAY}
//
// and expid in {WHERE_EXP_ID}
// and target = {WHERE_TARGET}
// and advertiser_id in {WHERE_ADVERTISER_ID}
//
// group by {GROUP_BY}
type ExpGet struct {
state protoimpl.MessageState `protogen:"open.v1"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
state protoimpl.MessageState `protogen:"open.v1"`
ExtFields []string `protobuf:"bytes,1,rep,name=ext_fields,json=extFields,proto3" json:"ext_fields,omitempty"` // 扩展字段(除基础字段必然输出外,其余字段需在这里填写,也可以使用*输出全部扩展字段)
WhereBeginDay uint64 `protobuf:"varint,10,opt,name=where_begin_day,json=whereBeginDay,proto3" json:"where_begin_day,omitempty"` // 起始日期
WhereEndDay uint64 `protobuf:"varint,11,opt,name=where_end_day,json=whereEndDay,proto3" json:"where_end_day,omitempty"` // 结束日期
WhereExpId []uint32 `protobuf:"varint,12,rep,packed,name=where_exp_id,json=whereExpId,proto3" json:"where_exp_id,omitempty"` // 实验ID(1-10)
WhereTarget string `protobuf:"bytes,13,opt,name=where_target,json=whereTarget,proto3" json:"where_target,omitempty"` // 策略ID
WhereAdvertiserId []uint64 `protobuf:"varint,14,rep,packed,name=where_advertiser_id,json=whereAdvertiserId,proto3" json:"where_advertiser_id,omitempty"` // 广告主ID
GroupBy []string `protobuf:"bytes,20,rep,name=group_by,json=groupBy,proto3" json:"group_by,omitempty"` // 当前支持广告主ID(advertiser_id)
TotalFlag uint32 `protobuf:"varint,30,opt,name=TotalFlag,proto3" json:"TotalFlag,omitempty"` // 是否汇总
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *ExpGet) Reset() {
@@ -2130,6 +2139,62 @@ func (*ExpGet) Descriptor() ([]byte, []int) {
return file_cmd_proto_rawDescGZIP(), []int{24}
}
func (x *ExpGet) GetExtFields() []string {
if x != nil {
return x.ExtFields
}
return nil
}
func (x *ExpGet) GetWhereBeginDay() uint64 {
if x != nil {
return x.WhereBeginDay
}
return 0
}
func (x *ExpGet) GetWhereEndDay() uint64 {
if x != nil {
return x.WhereEndDay
}
return 0
}
func (x *ExpGet) GetWhereExpId() []uint32 {
if x != nil {
return x.WhereExpId
}
return nil
}
func (x *ExpGet) GetWhereTarget() string {
if x != nil {
return x.WhereTarget
}
return ""
}
func (x *ExpGet) GetWhereAdvertiserId() []uint64 {
if x != nil {
return x.WhereAdvertiserId
}
return nil
}
func (x *ExpGet) GetGroupBy() []string {
if x != nil {
return x.GroupBy
}
return nil
}
func (x *ExpGet) GetTotalFlag() uint32 {
if x != nil {
return x.TotalFlag
}
return 0
}
// SaasRes 命令返回
type SaasRes struct {
state protoimpl.MessageState `protogen:"open.v1"`
@@ -2880,11 +2945,11 @@ func (x *Binds) GetBinds() []*Bind {
// Bind 绑定信息
type Bind struct {
state protoimpl.MessageState `protogen:"open.v1"`
BindId int64 `protobuf:"varint,1,opt,name=bind_id,json=bindId,proto3" json:"bind_id,omitempty"` //绑定的ID
BindType BindType `protobuf:"varint,2,opt,name=bind_type,json=bindType,proto3,enum=saasapi.BindType" json:"bind_type,omitempty"` //绑定类型
TargetId string `protobuf:"bytes,3,opt,name=target_id,json=targetId,proto3" json:"target_id,omitempty"` //策略ID
AccountId int64 `protobuf:"varint,4,opt,name=account_id,json=accountId,proto3" json:"account_id,omitempty"` //广告主ID
BindSource BindSourceType `protobuf:"varint,5,opt,name=bind_source,json=bindSource,proto3,enum=saasapi.BindSourceType" json:"bind_source,omitempty"` //绑定操作来源
BindId int64 `protobuf:"varint,1,opt,name=bind_id,json=bindId,proto3" json:"bind_id,omitempty"` // 绑定的ID
BindType BindType `protobuf:"varint,2,opt,name=bind_type,json=bindType,proto3,enum=saasapi.BindType" json:"bind_type,omitempty"` // 绑定类型
TargetId string `protobuf:"bytes,3,opt,name=target_id,json=targetId,proto3" json:"target_id,omitempty"` // 策略ID
AccountId int64 `protobuf:"varint,4,opt,name=account_id,json=accountId,proto3" json:"account_id,omitempty"` // 广告主ID
BindSource BindSourceType `protobuf:"varint,5,opt,name=bind_source,json=bindSource,proto3,enum=saasapi.BindSourceType" json:"bind_source,omitempty"` // 绑定操作来源
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
@@ -2957,9 +3022,9 @@ func (x *Bind) GetBindSource() BindSourceType {
// BindSetRes 设置绑定返回
type BindSetRes struct {
state protoimpl.MessageState `protogen:"open.v1"`
SuccessNum int32 `protobuf:"varint,1,opt,name=success_num,json=successNum,proto3" json:"success_num,omitempty"` //成功数
ErrorNum int32 `protobuf:"varint,2,opt,name=error_num,json=errorNum,proto3" json:"error_num,omitempty"` //错误数
Errors []*BindError `protobuf:"bytes,3,rep,name=errors,proto3" json:"errors,omitempty"` //绑定错误的记录
SuccessNum int32 `protobuf:"varint,1,opt,name=success_num,json=successNum,proto3" json:"success_num,omitempty"` // 成功数
ErrorNum int32 `protobuf:"varint,2,opt,name=error_num,json=errorNum,proto3" json:"error_num,omitempty"` // 错误数
Errors []*BindError `protobuf:"bytes,3,rep,name=errors,proto3" json:"errors,omitempty"` // 绑定错误的记录
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
@@ -3018,9 +3083,9 @@ func (x *BindSetRes) GetErrors() []*BindError {
// BindDeleteRes 删除绑定返回
type BindDeleteRes struct {
state protoimpl.MessageState `protogen:"open.v1"`
SuccessNum int32 `protobuf:"varint,1,opt,name=success_num,json=successNum,proto3" json:"success_num,omitempty"` //成功数
ErrorNum int32 `protobuf:"varint,2,opt,name=error_num,json=errorNum,proto3" json:"error_num,omitempty"` //错误数
Errors []*BindError `protobuf:"bytes,3,rep,name=errors,proto3" json:"errors,omitempty"` //绑定错误的记录
SuccessNum int32 `protobuf:"varint,1,opt,name=success_num,json=successNum,proto3" json:"success_num,omitempty"` // 成功数
ErrorNum int32 `protobuf:"varint,2,opt,name=error_num,json=errorNum,proto3" json:"error_num,omitempty"` // 错误数
Errors []*BindError `protobuf:"bytes,3,rep,name=errors,proto3" json:"errors,omitempty"` // 绑定错误的记录
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
@@ -3079,9 +3144,9 @@ func (x *BindDeleteRes) GetErrors() []*BindError {
// BindError 绑定错误信息
type BindError struct {
state protoimpl.MessageState `protogen:"open.v1"`
BindId int64 `protobuf:"varint,1,opt,name=bind_id,json=bindId,proto3" json:"bind_id,omitempty"` //错误绑定的绑定ID
BindType int32 `protobuf:"varint,2,opt,name=bind_type,json=bindType,proto3" json:"bind_type,omitempty"` //绑定类型
Reason string `protobuf:"bytes,3,opt,name=reason,proto3" json:"reason,omitempty"` //错误绑定原因
BindId int64 `protobuf:"varint,1,opt,name=bind_id,json=bindId,proto3" json:"bind_id,omitempty"` // 错误绑定的绑定ID
BindType int32 `protobuf:"varint,2,opt,name=bind_type,json=bindType,proto3" json:"bind_type,omitempty"` // 绑定类型
Reason string `protobuf:"bytes,3,opt,name=reason,proto3" json:"reason,omitempty"` // 错误绑定原因
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
@@ -3246,7 +3311,7 @@ func (*ScriptUpdateRes) Descriptor() ([]byte, []int) {
// ExpListRes 实验列表返回
type ExpListRes struct {
state protoimpl.MessageState `protogen:"open.v1"`
Buckets []*ExpBucket `protobuf:"bytes,1,rep,name=buckets,proto3" json:"buckets,omitempty"` //实验桶
Buckets []*ExpBucket `protobuf:"bytes,1,rep,name=buckets,proto3" json:"buckets,omitempty"` // 实验桶
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
@@ -3290,9 +3355,9 @@ func (x *ExpListRes) GetBuckets() []*ExpBucket {
type ExpBucket struct {
state protoimpl.MessageState `protogen:"open.v1"`
BucketId uint32 `protobuf:"varint,1,opt,name=bucket_id,json=bucketId,proto3" json:"bucket_id,omitempty"` //分桶号
PtExpId uint32 `protobuf:"varint,2,opt,name=pt_exp_id,json=ptExpId,proto3" json:"pt_exp_id,omitempty"` //平台实验ID
Percent uint32 `protobuf:"varint,3,opt,name=percent,proto3" json:"percent,omitempty"` //流量百分比
BucketId uint32 `protobuf:"varint,1,opt,name=bucket_id,json=bucketId,proto3" json:"bucket_id,omitempty"` // 分桶号
PtExpId uint32 `protobuf:"varint,2,opt,name=pt_exp_id,json=ptExpId,proto3" json:"pt_exp_id,omitempty"` // 平台实验ID
Percent uint32 `protobuf:"varint,3,opt,name=percent,proto3" json:"percent,omitempty"` // 流量百分比
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
@@ -3351,6 +3416,7 @@ func (x *ExpBucket) GetPercent() uint32 {
// ExpGetRes 实验报表返回
type ExpGetRes struct {
state protoimpl.MessageState `protogen:"open.v1"`
Expdata []*ExpData `protobuf:"bytes,1,rep,name=expdata,proto3" json:"expdata,omitempty"` // 实验数据
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
@@ -3385,6 +3451,213 @@ func (*ExpGetRes) Descriptor() ([]byte, []int) {
return file_cmd_proto_rawDescGZIP(), []int{42}
}
func (x *ExpGetRes) GetExpdata() []*ExpData {
if x != nil {
return x.Expdata
}
return nil
}
type ExpData struct {
state protoimpl.MessageState `protogen:"open.v1"`
Time uint64 `protobuf:"varint,1,opt,name=time,proto3" json:"time,omitempty"` // 日期
ExpId uint32 `protobuf:"varint,2,opt,name=ExpId,proto3" json:"ExpId,omitempty"` // 实验ID
BaseFields *ExpBaseFields `protobuf:"bytes,3,opt,name=base_fields,json=baseFields,proto3" json:"base_fields,omitempty"` // 基础字段
ExtFields map[string]float64 `protobuf:"bytes,4,rep,name=ext_fields,json=extFields,proto3" json:"ext_fields,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value"` // 扩展字段
Group map[string]uint64 `protobuf:"bytes,5,rep,name=group,proto3" json:"group,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"` // 分组
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *ExpData) Reset() {
*x = ExpData{}
mi := &file_cmd_proto_msgTypes[43]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *ExpData) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ExpData) ProtoMessage() {}
func (x *ExpData) ProtoReflect() protoreflect.Message {
mi := &file_cmd_proto_msgTypes[43]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use ExpData.ProtoReflect.Descriptor instead.
func (*ExpData) Descriptor() ([]byte, []int) {
return file_cmd_proto_rawDescGZIP(), []int{43}
}
func (x *ExpData) GetTime() uint64 {
if x != nil {
return x.Time
}
return 0
}
func (x *ExpData) GetExpId() uint32 {
if x != nil {
return x.ExpId
}
return 0
}
func (x *ExpData) GetBaseFields() *ExpBaseFields {
if x != nil {
return x.BaseFields
}
return nil
}
func (x *ExpData) GetExtFields() map[string]float64 {
if x != nil {
return x.ExtFields
}
return nil
}
func (x *ExpData) GetGroup() map[string]uint64 {
if x != nil {
return x.Group
}
return nil
}
type ExpBaseFields struct {
state protoimpl.MessageState `protogen:"open.v1"`
Cost float64 `protobuf:"fixed64,1,opt,name=cost,proto3" json:"cost,omitempty"` // 花费
Exposure int64 `protobuf:"varint,2,opt,name=exposure,proto3" json:"exposure,omitempty"` // 曝光量
Click int64 `protobuf:"varint,3,opt,name=click,proto3" json:"click,omitempty"` // 点击量
Cpm float64 `protobuf:"fixed64,4,opt,name=cpm,proto3" json:"cpm,omitempty"` // 单次曝光成本
Cpc float64 `protobuf:"fixed64,5,opt,name=cpc,proto3" json:"cpc,omitempty"` // 单次点击成本
Cpa float64 `protobuf:"fixed64,6,opt,name=cpa,proto3" json:"cpa,omitempty"` // 单次转化成本
Ctr float64 `protobuf:"fixed64,7,opt,name=ctr,proto3" json:"ctr,omitempty"` // 点击率
Cvr float64 `protobuf:"fixed64,8,opt,name=cvr,proto3" json:"cvr,omitempty"` // 浅层转化率
CvrSecond float64 `protobuf:"fixed64,9,opt,name=cvr_second,json=cvrSecond,proto3" json:"cvr_second,omitempty"` // 深层转化率
Conversion int64 `protobuf:"varint,10,opt,name=conversion,proto3" json:"conversion,omitempty"` // 浅层转化量
ConversionSecond int64 `protobuf:"varint,11,opt,name=conversion_second,json=conversionSecond,proto3" json:"conversion_second,omitempty"` // 深层转化量
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *ExpBaseFields) Reset() {
*x = ExpBaseFields{}
mi := &file_cmd_proto_msgTypes[44]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *ExpBaseFields) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ExpBaseFields) ProtoMessage() {}
func (x *ExpBaseFields) ProtoReflect() protoreflect.Message {
mi := &file_cmd_proto_msgTypes[44]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use ExpBaseFields.ProtoReflect.Descriptor instead.
func (*ExpBaseFields) Descriptor() ([]byte, []int) {
return file_cmd_proto_rawDescGZIP(), []int{44}
}
func (x *ExpBaseFields) GetCost() float64 {
if x != nil {
return x.Cost
}
return 0
}
func (x *ExpBaseFields) GetExposure() int64 {
if x != nil {
return x.Exposure
}
return 0
}
func (x *ExpBaseFields) GetClick() int64 {
if x != nil {
return x.Click
}
return 0
}
func (x *ExpBaseFields) GetCpm() float64 {
if x != nil {
return x.Cpm
}
return 0
}
func (x *ExpBaseFields) GetCpc() float64 {
if x != nil {
return x.Cpc
}
return 0
}
func (x *ExpBaseFields) GetCpa() float64 {
if x != nil {
return x.Cpa
}
return 0
}
func (x *ExpBaseFields) GetCtr() float64 {
if x != nil {
return x.Ctr
}
return 0
}
func (x *ExpBaseFields) GetCvr() float64 {
if x != nil {
return x.Cvr
}
return 0
}
func (x *ExpBaseFields) GetCvrSecond() float64 {
if x != nil {
return x.CvrSecond
}
return 0
}
func (x *ExpBaseFields) GetConversion() int64 {
if x != nil {
return x.Conversion
}
return 0
}
func (x *ExpBaseFields) GetConversionSecond() int64 {
if x != nil {
return x.ConversionSecond
}
return 0
}
var File_cmd_proto protoreflect.FileDescriptor
const file_cmd_proto_rawDesc = "" +
@@ -3433,11 +3706,10 @@ const file_cmd_proto_rawDesc = "" +
"\vwrite_bytes\x18\x02 \x01(\v2\x0e.saasapi.BytesR\n" +
"writeBytes\x125\n" +
"\rwrite_uint32s\x18\x03 \x01(\v2\x10.saasapi.Uint32sR\fwriteUint32s\x12O\n" +
"\x17write_flags_with_expire\x18\x04 \x01(\v2\x18.saasapi.FlagsWithExpireR\x14writeFlagsWithExpire\"S\n" +
"\x17write_flags_with_expire\x18\x04 \x01(\v2\x18.saasapi.FlagsWithExpireR\x14writeFlagsWithExpire\"6\n" +
"\x05Bytes\x12\x14\n" +
"\x05bytes\x18\x01 \x01(\fR\x05bytes\x12\x17\n" +
"\aindex_1\x18\x02 \x01(\x04R\x06index1\x12\x1b\n" +
"\aindex_2\x18\x03 \x01(\x04B\x02\x18\x01R\x06index2\"<\n" +
"\aindex_1\x18\x02 \x01(\x04R\x06index1\"<\n" +
"\aUint32s\x12\x18\n" +
"\auint32s\x18\x01 \x03(\rR\auint32s\x12\x17\n" +
"\aindex_1\x18\x02 \x01(\x04R\x06index1\"o\n" +
@@ -3515,8 +3787,19 @@ const file_cmd_proto_rawDesc = "" +
"\rserver_openid\x18\x04 \x01(\tR\fserverOpenid\x12\x1b\n" +
"\x02os\x18\x05 \x01(\x0e2\v.saasapi.OSR\x02os\"\x0e\n" +
"\fScriptUpdate\"\t\n" +
"\aExpList\"\b\n" +
"\x06ExpGet\"\xa9\a\n" +
"\aExpList\"\xa1\x02\n" +
"\x06ExpGet\x12\x1d\n" +
"\n" +
"ext_fields\x18\x01 \x03(\tR\textFields\x12&\n" +
"\x0fwhere_begin_day\x18\n" +
" \x01(\x04R\rwhereBeginDay\x12\"\n" +
"\rwhere_end_day\x18\v \x01(\x04R\vwhereEndDay\x12 \n" +
"\fwhere_exp_id\x18\f \x03(\rR\n" +
"whereExpId\x12!\n" +
"\fwhere_target\x18\r \x01(\tR\vwhereTarget\x12.\n" +
"\x13where_advertiser_id\x18\x0e \x03(\x04R\x11whereAdvertiserId\x12\x19\n" +
"\bgroup_by\x18\x14 \x03(\tR\agroupBy\x12\x1c\n" +
"\tTotalFlag\x18\x1e \x01(\rR\tTotalFlag\"\xa9\a\n" +
"\aSaasRes\x12&\n" +
"\x04code\x18\x01 \x01(\x0e2\x12.saasapi.ErrorCodeR\x04code\x12\x16\n" +
"\x06status\x18\x02 \x01(\tR\x06status\x12-\n" +
@@ -3605,8 +3888,40 @@ const file_cmd_proto_rawDesc = "" +
"\tExpBucket\x12\x1b\n" +
"\tbucket_id\x18\x01 \x01(\rR\bbucketId\x12\x1a\n" +
"\tpt_exp_id\x18\x02 \x01(\rR\aptExpId\x12\x18\n" +
"\apercent\x18\x03 \x01(\rR\apercent\"\v\n" +
"\tExpGetRes*=\n" +
"\apercent\x18\x03 \x01(\rR\apercent\"7\n" +
"\tExpGetRes\x12*\n" +
"\aexpdata\x18\x01 \x03(\v2\x10.saasapi.ExpDataR\aexpdata\"\xd7\x02\n" +
"\aExpData\x12\x12\n" +
"\x04time\x18\x01 \x01(\x04R\x04time\x12\x14\n" +
"\x05ExpId\x18\x02 \x01(\rR\x05ExpId\x127\n" +
"\vbase_fields\x18\x03 \x01(\v2\x16.saasapi.ExpBaseFieldsR\n" +
"baseFields\x12>\n" +
"\n" +
"ext_fields\x18\x04 \x03(\v2\x1f.saasapi.ExpData.ExtFieldsEntryR\textFields\x121\n" +
"\x05group\x18\x05 \x03(\v2\x1b.saasapi.ExpData.GroupEntryR\x05group\x1a<\n" +
"\x0eExtFieldsEntry\x12\x10\n" +
"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
"\x05value\x18\x02 \x01(\x01R\x05value:\x028\x01\x1a8\n" +
"\n" +
"GroupEntry\x12\x10\n" +
"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
"\x05value\x18\x02 \x01(\x04R\x05value:\x028\x01\"\x9b\x02\n" +
"\rExpBaseFields\x12\x12\n" +
"\x04cost\x18\x01 \x01(\x01R\x04cost\x12\x1a\n" +
"\bexposure\x18\x02 \x01(\x03R\bexposure\x12\x14\n" +
"\x05click\x18\x03 \x01(\x03R\x05click\x12\x10\n" +
"\x03cpm\x18\x04 \x01(\x01R\x03cpm\x12\x10\n" +
"\x03cpc\x18\x05 \x01(\x01R\x03cpc\x12\x10\n" +
"\x03cpa\x18\x06 \x01(\x01R\x03cpa\x12\x10\n" +
"\x03ctr\x18\a \x01(\x01R\x03ctr\x12\x10\n" +
"\x03cvr\x18\b \x01(\x01R\x03cvr\x12\x1d\n" +
"\n" +
"cvr_second\x18\t \x01(\x01R\tcvrSecond\x12\x1e\n" +
"\n" +
"conversion\x18\n" +
" \x01(\x03R\n" +
"conversion\x12+\n" +
"\x11conversion_second\x18\v \x01(\x03R\x10conversionSecond*=\n" +
"\bBindType\x12\x13\n" +
"\x0fUnknownBindType\x10\x00\x12\r\n" +
"\tAdgroupId\x10\x01\x12\r\n" +
@@ -3617,7 +3932,7 @@ const file_cmd_proto_rawDesc = "" +
"\x03ADQ\x10\x02\x12\x06\n" +
"\x02MP\x10\x03\x12\n" +
"\n" +
"\x06MktApi\x10\x04*\xfa\x03\n" +
"\x06MktApi\x10\x04*\x8d\x04\n" +
"\tErrorCode\x12\b\n" +
"\x04SUCC\x10\x00\x12\x13\n" +
"\x0fINVALID_ACCOUNT\x10e\x12\x15\n" +
@@ -3646,7 +3961,8 @@ const file_cmd_proto_rawDesc = "" +
"\n" +
"DATA_ERROR\x10\xc9\x01\x12\x0e\n" +
"\tCMD_ERROR\x10\xca\x01\x12\x0e\n" +
"\tAPI_ERROR\x10\xad\x02*\x16\n" +
"\tAPI_ERROR\x10\xad\x02\x12\x11\n" +
"\fTARGET_ERROR\x10\x91\x03*\x16\n" +
"\fCmdErrorCode\x12\x06\n" +
"\x02OK\x10\x00*^\n" +
"\n" +
@@ -3683,7 +3999,7 @@ func file_cmd_proto_rawDescGZIP() []byte {
}
var file_cmd_proto_enumTypes = make([]protoimpl.EnumInfo, 7)
var file_cmd_proto_msgTypes = make([]protoimpl.MessageInfo, 44)
var file_cmd_proto_msgTypes = make([]protoimpl.MessageInfo, 48)
var file_cmd_proto_goTypes = []any{
(BindType)(0), // 0: saasapi.BindType
(BindSourceType)(0), // 1: saasapi.BindSourceType
@@ -3735,7 +4051,11 @@ var file_cmd_proto_goTypes = []any{
(*ExpListRes)(nil), // 47: saasapi.ExpListRes
(*ExpBucket)(nil), // 48: saasapi.ExpBucket
(*ExpGetRes)(nil), // 49: saasapi.ExpGetRes
nil, // 50: saasapi.TargetListRes.TargetListEntry
(*ExpData)(nil), // 50: saasapi.ExpData
(*ExpBaseFields)(nil), // 51: saasapi.ExpBaseFields
nil, // 52: saasapi.TargetListRes.TargetListEntry
nil, // 53: saasapi.ExpData.ExtFieldsEntry
nil, // 54: saasapi.ExpData.GroupEntry
}
var file_cmd_proto_depIdxs = []int32{
8, // 0: saasapi.SaasReq.info:type_name -> saasapi.Info
@@ -3791,19 +4111,23 @@ var file_cmd_proto_depIdxs = []int32{
3, // 50: saasapi.ValueItem.cmd_code:type_name -> saasapi.CmdErrorCode
16, // 51: saasapi.ValueItem.flags_with_expire:type_name -> saasapi.FlagWithExpire
18, // 52: saasapi.TaskListRes.tasks:type_name -> saasapi.Task
50, // 53: saasapi.TargetListRes.target_list:type_name -> saasapi.TargetListRes.TargetListEntry
52, // 53: saasapi.TargetListRes.target_list:type_name -> saasapi.TargetListRes.TargetListEntry
41, // 54: saasapi.Binds.binds:type_name -> saasapi.Bind
0, // 55: saasapi.Bind.bind_type:type_name -> saasapi.BindType
1, // 56: saasapi.Bind.bind_source:type_name -> saasapi.BindSourceType
44, // 57: saasapi.BindSetRes.errors:type_name -> saasapi.BindError
44, // 58: saasapi.BindDeleteRes.errors:type_name -> saasapi.BindError
48, // 59: saasapi.ExpListRes.buckets:type_name -> saasapi.ExpBucket
40, // 60: saasapi.TargetListRes.TargetListEntry.value:type_name -> saasapi.Binds
61, // [61:61] is the sub-list for method output_type
61, // [61:61] is the sub-list for method input_type
61, // [61:61] is the sub-list for extension type_name
61, // [61:61] is the sub-list for extension extendee
0, // [0:61] is the sub-list for field type_name
50, // 60: saasapi.ExpGetRes.expdata:type_name -> saasapi.ExpData
51, // 61: saasapi.ExpData.base_fields:type_name -> saasapi.ExpBaseFields
53, // 62: saasapi.ExpData.ext_fields:type_name -> saasapi.ExpData.ExtFieldsEntry
54, // 63: saasapi.ExpData.group:type_name -> saasapi.ExpData.GroupEntry
40, // 64: saasapi.TargetListRes.TargetListEntry.value:type_name -> saasapi.Binds
65, // [65:65] is the sub-list for method output_type
65, // [65:65] is the sub-list for method input_type
65, // [65:65] is the sub-list for extension type_name
65, // [65:65] is the sub-list for extension extendee
0, // [0:65] is the sub-list for field type_name
}
func init() { file_cmd_proto_init() }
@@ -3852,7 +4176,7 @@ func file_cmd_proto_init() {
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: unsafe.Slice(unsafe.StringData(file_cmd_proto_rawDesc), len(file_cmd_proto_rawDesc)),
NumEnums: 7,
NumMessages: 44,
NumMessages: 48,
NumExtensions: 0,
NumServices: 0,
},