From 11f89932d024080171406d4a8335c50938772568 Mon Sep 17 00:00:00 2001 From: daiyb <570956418@qq.com> Date: Wed, 19 Nov 2025 17:20:05 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=8F=90=E7=A4=BA=E8=AF=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/cast/cast.pb.go | 620 ++++++++++++++++++++++++---- api/cast/cast.pb.validate.go | 764 +++++++++++++++++++++++++++++++++++ api/cast/cast_triple.pb.go | 182 +++++++++ data/提示词.xlsx | Bin 0 -> 10652 bytes pkg/router/media.go | 9 + pkg/service/cast/prompt.go | 190 +++++++++ 6 files changed, 1677 insertions(+), 88 deletions(-) create mode 100644 data/提示词.xlsx create mode 100644 pkg/service/cast/prompt.go diff --git a/api/cast/cast.pb.go b/api/cast/cast.pb.go index e0c2df3..3a2000e 100644 --- a/api/cast/cast.pb.go +++ b/api/cast/cast.pb.go @@ -4253,6 +4253,395 @@ func (x *GetLayoutResp) GetFormName() string { return "" } +// 关键词相关消息定义 +type UpdatePromptReq struct { + state protoimpl.MessageState `protogen:"open.v1"` + PromptUuid string `protobuf:"bytes,1,opt,name=promptUuid,proto3" json:"promptUuid"` // 关键词UUID + Prompt string `protobuf:"bytes,2,opt,name=prompt,proto3" json:"prompt"` // 关键词 + Category string `protobuf:"bytes,3,opt,name=category,proto3" json:"category"` // 分类 + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *UpdatePromptReq) Reset() { + *x = UpdatePromptReq{} + mi := &file_pb_fiee_cast_proto_msgTypes[56] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *UpdatePromptReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpdatePromptReq) ProtoMessage() {} + +func (x *UpdatePromptReq) ProtoReflect() protoreflect.Message { + mi := &file_pb_fiee_cast_proto_msgTypes[56] + 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 UpdatePromptReq.ProtoReflect.Descriptor instead. +func (*UpdatePromptReq) Descriptor() ([]byte, []int) { + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{56} +} + +func (x *UpdatePromptReq) GetPromptUuid() string { + if x != nil { + return x.PromptUuid + } + return "" +} + +func (x *UpdatePromptReq) GetPrompt() string { + if x != nil { + return x.Prompt + } + return "" +} + +func (x *UpdatePromptReq) GetCategory() string { + if x != nil { + return x.Category + } + return "" +} + +type DeletePromptReq struct { + state protoimpl.MessageState `protogen:"open.v1"` + PromptUuid string `protobuf:"bytes,1,opt,name=promptUuid,proto3" json:"promptUuid"` // 关键词UUID + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *DeletePromptReq) Reset() { + *x = DeletePromptReq{} + mi := &file_pb_fiee_cast_proto_msgTypes[57] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *DeletePromptReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeletePromptReq) ProtoMessage() {} + +func (x *DeletePromptReq) ProtoReflect() protoreflect.Message { + mi := &file_pb_fiee_cast_proto_msgTypes[57] + 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 DeletePromptReq.ProtoReflect.Descriptor instead. +func (*DeletePromptReq) Descriptor() ([]byte, []int) { + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{57} +} + +func (x *DeletePromptReq) GetPromptUuid() string { + if x != nil { + return x.PromptUuid + } + return "" +} + +type GetPromptReq struct { + state protoimpl.MessageState `protogen:"open.v1"` + PromptUuid string `protobuf:"bytes,1,opt,name=promptUuid,proto3" json:"promptUuid"` // 关键词UUID + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetPromptReq) Reset() { + *x = GetPromptReq{} + mi := &file_pb_fiee_cast_proto_msgTypes[58] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetPromptReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetPromptReq) ProtoMessage() {} + +func (x *GetPromptReq) ProtoReflect() protoreflect.Message { + mi := &file_pb_fiee_cast_proto_msgTypes[58] + 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 GetPromptReq.ProtoReflect.Descriptor instead. +func (*GetPromptReq) Descriptor() ([]byte, []int) { + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{58} +} + +func (x *GetPromptReq) GetPromptUuid() string { + if x != nil { + return x.PromptUuid + } + return "" +} + +type GetPromptResp struct { + state protoimpl.MessageState `protogen:"open.v1"` + PromptUuid string `protobuf:"bytes,1,opt,name=promptUuid,proto3" json:"promptUuid"` // 关键词UUID + Prompt string `protobuf:"bytes,2,opt,name=prompt,proto3" json:"prompt"` // 关键词 + Category string `protobuf:"bytes,3,opt,name=category,proto3" json:"category"` // 分类 + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetPromptResp) Reset() { + *x = GetPromptResp{} + mi := &file_pb_fiee_cast_proto_msgTypes[59] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetPromptResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetPromptResp) ProtoMessage() {} + +func (x *GetPromptResp) ProtoReflect() protoreflect.Message { + mi := &file_pb_fiee_cast_proto_msgTypes[59] + 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 GetPromptResp.ProtoReflect.Descriptor instead. +func (*GetPromptResp) Descriptor() ([]byte, []int) { + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{59} +} + +func (x *GetPromptResp) GetPromptUuid() string { + if x != nil { + return x.PromptUuid + } + return "" +} + +func (x *GetPromptResp) GetPrompt() string { + if x != nil { + return x.Prompt + } + return "" +} + +func (x *GetPromptResp) GetCategory() string { + if x != nil { + return x.Category + } + return "" +} + +type ListPromptsReq struct { + state protoimpl.MessageState `protogen:"open.v1"` + Prompt string `protobuf:"bytes,1,opt,name=prompt,proto3" json:"prompt"` // 关键词搜索 + Category string `protobuf:"bytes,2,opt,name=category,proto3" json:"category"` // 分类筛选 + Page int32 `protobuf:"varint,3,opt,name=page,proto3" json:"page"` // 页码 + PageSize int32 `protobuf:"varint,4,opt,name=pageSize,proto3" json:"pageSize"` // 每页数量 + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ListPromptsReq) Reset() { + *x = ListPromptsReq{} + mi := &file_pb_fiee_cast_proto_msgTypes[60] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ListPromptsReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListPromptsReq) ProtoMessage() {} + +func (x *ListPromptsReq) ProtoReflect() protoreflect.Message { + mi := &file_pb_fiee_cast_proto_msgTypes[60] + 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 ListPromptsReq.ProtoReflect.Descriptor instead. +func (*ListPromptsReq) Descriptor() ([]byte, []int) { + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{60} +} + +func (x *ListPromptsReq) GetPrompt() string { + if x != nil { + return x.Prompt + } + return "" +} + +func (x *ListPromptsReq) GetCategory() string { + if x != nil { + return x.Category + } + return "" +} + +func (x *ListPromptsReq) GetPage() int32 { + if x != nil { + return x.Page + } + return 0 +} + +func (x *ListPromptsReq) GetPageSize() int32 { + if x != nil { + return x.PageSize + } + return 0 +} + +type PromptInfo struct { + state protoimpl.MessageState `protogen:"open.v1"` + PromptUuid string `protobuf:"bytes,1,opt,name=promptUuid,proto3" json:"promptUuid"` // 关键词UUID + Prompt string `protobuf:"bytes,2,opt,name=prompt,proto3" json:"prompt"` // 关键词 + Category string `protobuf:"bytes,3,opt,name=category,proto3" json:"category"` // 分类 + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *PromptInfo) Reset() { + *x = PromptInfo{} + mi := &file_pb_fiee_cast_proto_msgTypes[61] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *PromptInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PromptInfo) ProtoMessage() {} + +func (x *PromptInfo) ProtoReflect() protoreflect.Message { + mi := &file_pb_fiee_cast_proto_msgTypes[61] + 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 PromptInfo.ProtoReflect.Descriptor instead. +func (*PromptInfo) Descriptor() ([]byte, []int) { + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{61} +} + +func (x *PromptInfo) GetPromptUuid() string { + if x != nil { + return x.PromptUuid + } + return "" +} + +func (x *PromptInfo) GetPrompt() string { + if x != nil { + return x.Prompt + } + return "" +} + +func (x *PromptInfo) GetCategory() string { + if x != nil { + return x.Category + } + return "" +} + +type ListPromptsResp struct { + state protoimpl.MessageState `protogen:"open.v1"` + Data []*PromptInfo `protobuf:"bytes,1,rep,name=data,proto3" json:"data"` // 关键词列表 + Count int64 `protobuf:"varint,2,opt,name=count,proto3" json:"count"` // 总数 + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ListPromptsResp) Reset() { + *x = ListPromptsResp{} + mi := &file_pb_fiee_cast_proto_msgTypes[62] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ListPromptsResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListPromptsResp) ProtoMessage() {} + +func (x *ListPromptsResp) ProtoReflect() protoreflect.Message { + mi := &file_pb_fiee_cast_proto_msgTypes[62] + 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 ListPromptsResp.ProtoReflect.Descriptor instead. +func (*ListPromptsResp) Descriptor() ([]byte, []int) { + return file_pb_fiee_cast_proto_rawDescGZIP(), []int{62} +} + +func (x *ListPromptsResp) GetData() []*PromptInfo { + if x != nil { + return x.Data + } + return nil +} + +func (x *ListPromptsResp) GetCount() int64 { + if x != nil { + return x.Count + } + return 0 +} + type WorkListResp_Info struct { state protoimpl.MessageState `protogen:"open.v1"` WorkUuid string `protobuf:"bytes,1,opt,name=workUuid,proto3" json:"workUuid"` @@ -4276,7 +4665,7 @@ type WorkListResp_Info struct { func (x *WorkListResp_Info) Reset() { *x = WorkListResp_Info{} - mi := &file_pb_fiee_cast_proto_msgTypes[56] + mi := &file_pb_fiee_cast_proto_msgTypes[63] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4288,7 +4677,7 @@ func (x *WorkListResp_Info) String() string { func (*WorkListResp_Info) ProtoMessage() {} func (x *WorkListResp_Info) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[56] + mi := &file_pb_fiee_cast_proto_msgTypes[63] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4423,7 +4812,7 @@ type MediaAccountsResp_Info struct { func (x *MediaAccountsResp_Info) Reset() { *x = MediaAccountsResp_Info{} - mi := &file_pb_fiee_cast_proto_msgTypes[58] + mi := &file_pb_fiee_cast_proto_msgTypes[65] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4435,7 +4824,7 @@ func (x *MediaAccountsResp_Info) String() string { func (*MediaAccountsResp_Info) ProtoMessage() {} func (x *MediaAccountsResp_Info) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[58] + mi := &file_pb_fiee_cast_proto_msgTypes[65] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4511,7 +4900,7 @@ type MediaWorksResp_Info struct { func (x *MediaWorksResp_Info) Reset() { *x = MediaWorksResp_Info{} - mi := &file_pb_fiee_cast_proto_msgTypes[59] + mi := &file_pb_fiee_cast_proto_msgTypes[66] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4523,7 +4912,7 @@ func (x *MediaWorksResp_Info) String() string { func (*MediaWorksResp_Info) ProtoMessage() {} func (x *MediaWorksResp_Info) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[59] + mi := &file_pb_fiee_cast_proto_msgTypes[66] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4619,7 +5008,7 @@ type PublishResp_Info struct { func (x *PublishResp_Info) Reset() { *x = PublishResp_Info{} - mi := &file_pb_fiee_cast_proto_msgTypes[60] + mi := &file_pb_fiee_cast_proto_msgTypes[67] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4631,7 +5020,7 @@ func (x *PublishResp_Info) String() string { func (*PublishResp_Info) ProtoMessage() {} func (x *PublishResp_Info) ProtoReflect() protoreflect.Message { - mi := &file_pb_fiee_cast_proto_msgTypes[60] + mi := &file_pb_fiee_cast_proto_msgTypes[67] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5141,7 +5530,42 @@ const file_pb_fiee_cast_proto_rawDesc = "" + "\bformName\x18\x02 \x01(\tR\bformName\"?\n" + "\rGetLayoutResp\x12\x12\n" + "\x04data\x18\x01 \x01(\tR\x04data\x12\x1a\n" + - "\bformName\x18\x03 \x01(\tR\bformName*G\n" + + "\bformName\x18\x03 \x01(\tR\bformName\"e\n" + + "\x0fUpdatePromptReq\x12\x1e\n" + + "\n" + + "promptUuid\x18\x01 \x01(\tR\n" + + "promptUuid\x12\x16\n" + + "\x06prompt\x18\x02 \x01(\tR\x06prompt\x12\x1a\n" + + "\bcategory\x18\x03 \x01(\tR\bcategory\"1\n" + + "\x0fDeletePromptReq\x12\x1e\n" + + "\n" + + "promptUuid\x18\x01 \x01(\tR\n" + + "promptUuid\".\n" + + "\fGetPromptReq\x12\x1e\n" + + "\n" + + "promptUuid\x18\x01 \x01(\tR\n" + + "promptUuid\"c\n" + + "\rGetPromptResp\x12\x1e\n" + + "\n" + + "promptUuid\x18\x01 \x01(\tR\n" + + "promptUuid\x12\x16\n" + + "\x06prompt\x18\x02 \x01(\tR\x06prompt\x12\x1a\n" + + "\bcategory\x18\x03 \x01(\tR\bcategory\"t\n" + + "\x0eListPromptsReq\x12\x16\n" + + "\x06prompt\x18\x01 \x01(\tR\x06prompt\x12\x1a\n" + + "\bcategory\x18\x02 \x01(\tR\bcategory\x12\x12\n" + + "\x04page\x18\x03 \x01(\x05R\x04page\x12\x1a\n" + + "\bpageSize\x18\x04 \x01(\x05R\bpageSize\"`\n" + + "\n" + + "PromptInfo\x12\x1e\n" + + "\n" + + "promptUuid\x18\x01 \x01(\tR\n" + + "promptUuid\x12\x16\n" + + "\x06prompt\x18\x02 \x01(\tR\x06prompt\x12\x1a\n" + + "\bcategory\x18\x03 \x01(\tR\bcategory\"M\n" + + "\x0fListPromptsResp\x12$\n" + + "\x04data\x18\x01 \x03(\v2\x10.Cast.PromptInfoR\x04data\x12\x14\n" + + "\x05count\x18\x02 \x01(\x03R\x05count*G\n" + "\x0ePlatformIDENUM\x12\v\n" + "\aUNKNOWN\x10\x00\x12\n" + "\n" + @@ -5165,7 +5589,7 @@ const file_pb_fiee_cast_proto_rawDesc = "" + "\x0fAutoPublishENUM\x12\x16\n" + "\x12AutoPublish_UNKONW\x10\x00\x12\x14\n" + "\x10AutoPublish_TRUE\x10\x01\x12\x15\n" + - "\x11AutoPublish_FALSE\x10\x022\x99\x0f\n" + + "\x11AutoPublish_FALSE\x10\x022\x91\x11\n" + "\x04Cast\x12B\n" + "\rMediaUserList\x12\x16.Cast.MediaUserListReq\x1a\x17.Cast.MediaUserListResp\"\x00\x12Q\n" + "\x12UpdateMediaAccount\x12\x1b.Cast.UpdateMediaAccountReq\x1a\x1c.Cast.UpdateMediaAccountResp\"\x00\x12B\n" + @@ -5198,7 +5622,11 @@ const file_pb_fiee_cast_proto_rawDesc = "" + "\x16UpdateVideoScriptBatch\x12\x1f.Cast.UpdateVideoScriptBatchReq\x1a .Cast.UpdateVideoScriptBatchResp\"\x00\x12K\n" + "\x12UpdateScriptStatus\x12\x1b.Cast.UpdateScriptStatusReq\x1a\x16.google.protobuf.Empty\"\x00\x126\n" + "\tGetLayout\x12\x12.Cast.GetLayoutReq\x1a\x13.Cast.GetLayoutResp\"\x00\x129\n" + - "\tSetLayout\x12\x12.Cast.SetLayoutReq\x1a\x16.google.protobuf.Empty\"\x00B\rZ\v./cast;castb\x06proto3" + "\tSetLayout\x12\x12.Cast.SetLayoutReq\x1a\x16.google.protobuf.Empty\"\x00\x12?\n" + + "\fUpdatePrompt\x12\x15.Cast.UpdatePromptReq\x1a\x16.google.protobuf.Empty\"\x00\x12?\n" + + "\fDeletePrompt\x12\x15.Cast.DeletePromptReq\x1a\x16.google.protobuf.Empty\"\x00\x126\n" + + "\tGetPrompt\x12\x12.Cast.GetPromptReq\x1a\x13.Cast.GetPromptResp\"\x00\x12<\n" + + "\vListPrompts\x12\x14.Cast.ListPromptsReq\x1a\x15.Cast.ListPromptsResp\"\x00B\rZ\v./cast;castb\x06proto3" var ( file_pb_fiee_cast_proto_rawDescOnce sync.Once @@ -5213,7 +5641,7 @@ func file_pb_fiee_cast_proto_rawDescGZIP() []byte { } var file_pb_fiee_cast_proto_enumTypes = make([]protoimpl.EnumInfo, 4) -var file_pb_fiee_cast_proto_msgTypes = make([]protoimpl.MessageInfo, 61) +var file_pb_fiee_cast_proto_msgTypes = make([]protoimpl.MessageInfo, 68) var file_pb_fiee_cast_proto_goTypes = []any{ (PlatformIDENUM)(0), // 0: Cast.PlatformIDENUM (AuthStatusENUM)(0), // 1: Cast.AuthStatusENUM @@ -5275,12 +5703,19 @@ var file_pb_fiee_cast_proto_goTypes = []any{ (*SetLayoutReq)(nil), // 57: Cast.SetLayoutReq (*GetLayoutReq)(nil), // 58: Cast.GetLayoutReq (*GetLayoutResp)(nil), // 59: Cast.GetLayoutResp - (*WorkListResp_Info)(nil), // 60: Cast.WorkListResp.Info - nil, // 61: Cast.WorkDetailResp.MediaAccDataEntry - (*MediaAccountsResp_Info)(nil), // 62: Cast.MediaAccountsResp.Info - (*MediaWorksResp_Info)(nil), // 63: Cast.MediaWorksResp.Info - (*PublishResp_Info)(nil), // 64: Cast.PublishResp.Info - (*emptypb.Empty)(nil), // 65: google.protobuf.Empty + (*UpdatePromptReq)(nil), // 60: Cast.UpdatePromptReq + (*DeletePromptReq)(nil), // 61: Cast.DeletePromptReq + (*GetPromptReq)(nil), // 62: Cast.GetPromptReq + (*GetPromptResp)(nil), // 63: Cast.GetPromptResp + (*ListPromptsReq)(nil), // 64: Cast.ListPromptsReq + (*PromptInfo)(nil), // 65: Cast.PromptInfo + (*ListPromptsResp)(nil), // 66: Cast.ListPromptsResp + (*WorkListResp_Info)(nil), // 67: Cast.WorkListResp.Info + nil, // 68: Cast.WorkDetailResp.MediaAccDataEntry + (*MediaAccountsResp_Info)(nil), // 69: Cast.MediaAccountsResp.Info + (*MediaWorksResp_Info)(nil), // 70: Cast.MediaWorksResp.Info + (*PublishResp_Info)(nil), // 71: Cast.PublishResp.Info + (*emptypb.Empty)(nil), // 72: google.protobuf.Empty } var file_pb_fiee_cast_proto_depIdxs = []int32{ 0, // 0: Cast.MediaUserListReq.platformID:type_name -> Cast.PlatformIDENUM @@ -5298,87 +5733,96 @@ var file_pb_fiee_cast_proto_depIdxs = []int32{ 14, // 12: Cast.UpdateWorkVideoReq.publishConfig2:type_name -> Cast.PublishConfig 14, // 13: Cast.UpdateWorkVideoReq.publishConfig3:type_name -> Cast.PublishConfig 3, // 14: Cast.UpdateWorkVideoReq.autoPublish:type_name -> Cast.AutoPublishENUM - 60, // 15: Cast.WorkListResp.data:type_name -> Cast.WorkListResp.Info + 67, // 15: Cast.WorkListResp.data:type_name -> Cast.WorkListResp.Info 14, // 16: Cast.WorkDetailResp.publishConfig1:type_name -> Cast.PublishConfig 14, // 17: Cast.WorkDetailResp.publishConfig2:type_name -> Cast.PublishConfig 14, // 18: Cast.WorkDetailResp.publishConfig3:type_name -> Cast.PublishConfig 20, // 19: Cast.WorkDetailResp.WorkLogData:type_name -> Cast.WorkLogInfo - 61, // 20: Cast.WorkDetailResp.mediaAccData:type_name -> Cast.WorkDetailResp.MediaAccDataEntry + 68, // 20: Cast.WorkDetailResp.mediaAccData:type_name -> Cast.WorkDetailResp.MediaAccDataEntry 2, // 21: Cast.UpdateStatusReq.workAction:type_name -> Cast.WorkActionENUM 3, // 22: Cast.UpdateStatusReq.autoPublish:type_name -> Cast.AutoPublishENUM - 62, // 23: Cast.MediaAccountsResp.data:type_name -> Cast.MediaAccountsResp.Info - 63, // 24: Cast.MediaWorksResp.data:type_name -> Cast.MediaWorksResp.Info - 64, // 25: Cast.PublishResp.data:type_name -> Cast.PublishResp.Info + 69, // 23: Cast.MediaAccountsResp.data:type_name -> Cast.MediaAccountsResp.Info + 70, // 24: Cast.MediaWorksResp.data:type_name -> Cast.MediaWorksResp.Info + 71, // 25: Cast.PublishResp.data:type_name -> Cast.PublishResp.Info 0, // 26: Cast.OAuthCodeToTokenReq.platformID:type_name -> Cast.PlatformIDENUM 0, // 27: Cast.RefreshTokenReq.platformID:type_name -> Cast.PlatformIDENUM 51, // 28: Cast.ListVideoScriptsResp.data:type_name -> Cast.VideoScriptInfo 51, // 29: Cast.UpdateVideoScriptBatchReq.data:type_name -> Cast.VideoScriptInfo 51, // 30: Cast.UpdateVideoScriptBatchResp.data:type_name -> Cast.VideoScriptInfo 2, // 31: Cast.UpdateScriptStatusReq.workAction:type_name -> Cast.WorkActionENUM - 5, // 32: Cast.WorkDetailResp.MediaAccDataEntry.value:type_name -> Cast.MediaUserInfo - 4, // 33: Cast.Cast.MediaUserList:input_type -> Cast.MediaUserListReq - 7, // 34: Cast.Cast.UpdateMediaAccount:input_type -> Cast.UpdateMediaAccountReq - 9, // 35: Cast.Cast.UnbindManager:input_type -> Cast.UnbindManagerReq - 11, // 36: Cast.Cast.BindManager:input_type -> Cast.BindManagerReq - 12, // 37: Cast.Cast.UpdateWorkImage:input_type -> Cast.UpdateWorkImageReq - 15, // 38: Cast.Cast.UpdateWorkVideo:input_type -> Cast.UpdateWorkVideoReq - 17, // 39: Cast.Cast.WorkList:input_type -> Cast.WorkListReq - 19, // 40: Cast.Cast.WorkDetail:input_type -> Cast.WorkDetailReq - 22, // 41: Cast.Cast.UpdateStatus:input_type -> Cast.UpdateStatusReq - 23, // 42: Cast.Cast.MediaAccounts:input_type -> Cast.MediaAccountsReq - 25, // 43: Cast.Cast.MediaWorks:input_type -> Cast.MediaWorksReq - 27, // 44: Cast.Cast.Publish:input_type -> Cast.PublishReq - 29, // 45: Cast.Cast.RePublish:input_type -> Cast.RePublishReq - 31, // 46: Cast.Cast.DelWork:input_type -> Cast.DelWorkReq - 32, // 47: Cast.Cast.WorkInfo:input_type -> Cast.WorkInfoReq - 34, // 48: Cast.Cast.ArtistInfo:input_type -> Cast.ArtistInfoReq - 36, // 49: Cast.Cast.OAuthAccount:input_type -> Cast.OAuthAccountReq - 40, // 50: Cast.Cast.OAuthCodeToToken:input_type -> Cast.OAuthCodeToTokenReq - 42, // 51: Cast.Cast.RefreshToken:input_type -> Cast.RefreshTokenReq - 44, // 52: Cast.Cast.PublishMediaInfo:input_type -> Cast.PublishMediaInfoReq - 65, // 53: Cast.Cast.Test:input_type -> google.protobuf.Empty - 46, // 54: Cast.Cast.UpdateVideoScript:input_type -> Cast.UpdateVideoScriptReq - 48, // 55: Cast.Cast.GetVideoScript:input_type -> Cast.GetVideoScriptReq - 50, // 56: Cast.Cast.ListVideoScripts:input_type -> Cast.ListVideoScriptsReq - 53, // 57: Cast.Cast.DeleteVideoScript:input_type -> Cast.DeleteVideoScriptReq - 54, // 58: Cast.Cast.UpdateVideoScriptBatch:input_type -> Cast.UpdateVideoScriptBatchReq - 56, // 59: Cast.Cast.UpdateScriptStatus:input_type -> Cast.UpdateScriptStatusReq - 58, // 60: Cast.Cast.GetLayout:input_type -> Cast.GetLayoutReq - 57, // 61: Cast.Cast.SetLayout:input_type -> Cast.SetLayoutReq - 6, // 62: Cast.Cast.MediaUserList:output_type -> Cast.MediaUserListResp - 8, // 63: Cast.Cast.UpdateMediaAccount:output_type -> Cast.UpdateMediaAccountResp - 10, // 64: Cast.Cast.UnbindManager:output_type -> Cast.UnbindManagerResp - 65, // 65: Cast.Cast.BindManager:output_type -> google.protobuf.Empty - 13, // 66: Cast.Cast.UpdateWorkImage:output_type -> Cast.UpdateWorkImageResp - 16, // 67: Cast.Cast.UpdateWorkVideo:output_type -> Cast.UpdateWorkVideoResp - 18, // 68: Cast.Cast.WorkList:output_type -> Cast.WorkListResp - 21, // 69: Cast.Cast.WorkDetail:output_type -> Cast.WorkDetailResp - 65, // 70: Cast.Cast.UpdateStatus:output_type -> google.protobuf.Empty - 24, // 71: Cast.Cast.MediaAccounts:output_type -> Cast.MediaAccountsResp - 26, // 72: Cast.Cast.MediaWorks:output_type -> Cast.MediaWorksResp - 28, // 73: Cast.Cast.Publish:output_type -> Cast.PublishResp - 30, // 74: Cast.Cast.RePublish:output_type -> Cast.RePublishResp - 65, // 75: Cast.Cast.DelWork:output_type -> google.protobuf.Empty - 33, // 76: Cast.Cast.WorkInfo:output_type -> Cast.WorkInfoResp - 35, // 77: Cast.Cast.ArtistInfo:output_type -> Cast.ArtistInfoResp - 37, // 78: Cast.Cast.OAuthAccount:output_type -> Cast.OAuthAccountResp - 41, // 79: Cast.Cast.OAuthCodeToToken:output_type -> Cast.OAuthCodeToTokenResp - 43, // 80: Cast.Cast.RefreshToken:output_type -> Cast.RefreshTokenResp - 45, // 81: Cast.Cast.PublishMediaInfo:output_type -> Cast.PublishMediaInfoResp - 65, // 82: Cast.Cast.Test:output_type -> google.protobuf.Empty - 47, // 83: Cast.Cast.UpdateVideoScript:output_type -> Cast.UpdateVideoScriptResp - 49, // 84: Cast.Cast.GetVideoScript:output_type -> Cast.GetVideoScriptResp - 52, // 85: Cast.Cast.ListVideoScripts:output_type -> Cast.ListVideoScriptsResp - 65, // 86: Cast.Cast.DeleteVideoScript:output_type -> google.protobuf.Empty - 55, // 87: Cast.Cast.UpdateVideoScriptBatch:output_type -> Cast.UpdateVideoScriptBatchResp - 65, // 88: Cast.Cast.UpdateScriptStatus:output_type -> google.protobuf.Empty - 59, // 89: Cast.Cast.GetLayout:output_type -> Cast.GetLayoutResp - 65, // 90: Cast.Cast.SetLayout:output_type -> google.protobuf.Empty - 62, // [62:91] is the sub-list for method output_type - 33, // [33:62] is the sub-list for method input_type - 33, // [33:33] is the sub-list for extension type_name - 33, // [33:33] is the sub-list for extension extendee - 0, // [0:33] is the sub-list for field type_name + 65, // 32: Cast.ListPromptsResp.data:type_name -> Cast.PromptInfo + 5, // 33: Cast.WorkDetailResp.MediaAccDataEntry.value:type_name -> Cast.MediaUserInfo + 4, // 34: Cast.Cast.MediaUserList:input_type -> Cast.MediaUserListReq + 7, // 35: Cast.Cast.UpdateMediaAccount:input_type -> Cast.UpdateMediaAccountReq + 9, // 36: Cast.Cast.UnbindManager:input_type -> Cast.UnbindManagerReq + 11, // 37: Cast.Cast.BindManager:input_type -> Cast.BindManagerReq + 12, // 38: Cast.Cast.UpdateWorkImage:input_type -> Cast.UpdateWorkImageReq + 15, // 39: Cast.Cast.UpdateWorkVideo:input_type -> Cast.UpdateWorkVideoReq + 17, // 40: Cast.Cast.WorkList:input_type -> Cast.WorkListReq + 19, // 41: Cast.Cast.WorkDetail:input_type -> Cast.WorkDetailReq + 22, // 42: Cast.Cast.UpdateStatus:input_type -> Cast.UpdateStatusReq + 23, // 43: Cast.Cast.MediaAccounts:input_type -> Cast.MediaAccountsReq + 25, // 44: Cast.Cast.MediaWorks:input_type -> Cast.MediaWorksReq + 27, // 45: Cast.Cast.Publish:input_type -> Cast.PublishReq + 29, // 46: Cast.Cast.RePublish:input_type -> Cast.RePublishReq + 31, // 47: Cast.Cast.DelWork:input_type -> Cast.DelWorkReq + 32, // 48: Cast.Cast.WorkInfo:input_type -> Cast.WorkInfoReq + 34, // 49: Cast.Cast.ArtistInfo:input_type -> Cast.ArtistInfoReq + 36, // 50: Cast.Cast.OAuthAccount:input_type -> Cast.OAuthAccountReq + 40, // 51: Cast.Cast.OAuthCodeToToken:input_type -> Cast.OAuthCodeToTokenReq + 42, // 52: Cast.Cast.RefreshToken:input_type -> Cast.RefreshTokenReq + 44, // 53: Cast.Cast.PublishMediaInfo:input_type -> Cast.PublishMediaInfoReq + 72, // 54: Cast.Cast.Test:input_type -> google.protobuf.Empty + 46, // 55: Cast.Cast.UpdateVideoScript:input_type -> Cast.UpdateVideoScriptReq + 48, // 56: Cast.Cast.GetVideoScript:input_type -> Cast.GetVideoScriptReq + 50, // 57: Cast.Cast.ListVideoScripts:input_type -> Cast.ListVideoScriptsReq + 53, // 58: Cast.Cast.DeleteVideoScript:input_type -> Cast.DeleteVideoScriptReq + 54, // 59: Cast.Cast.UpdateVideoScriptBatch:input_type -> Cast.UpdateVideoScriptBatchReq + 56, // 60: Cast.Cast.UpdateScriptStatus:input_type -> Cast.UpdateScriptStatusReq + 58, // 61: Cast.Cast.GetLayout:input_type -> Cast.GetLayoutReq + 57, // 62: Cast.Cast.SetLayout:input_type -> Cast.SetLayoutReq + 60, // 63: Cast.Cast.UpdatePrompt:input_type -> Cast.UpdatePromptReq + 61, // 64: Cast.Cast.DeletePrompt:input_type -> Cast.DeletePromptReq + 62, // 65: Cast.Cast.GetPrompt:input_type -> Cast.GetPromptReq + 64, // 66: Cast.Cast.ListPrompts:input_type -> Cast.ListPromptsReq + 6, // 67: Cast.Cast.MediaUserList:output_type -> Cast.MediaUserListResp + 8, // 68: Cast.Cast.UpdateMediaAccount:output_type -> Cast.UpdateMediaAccountResp + 10, // 69: Cast.Cast.UnbindManager:output_type -> Cast.UnbindManagerResp + 72, // 70: Cast.Cast.BindManager:output_type -> google.protobuf.Empty + 13, // 71: Cast.Cast.UpdateWorkImage:output_type -> Cast.UpdateWorkImageResp + 16, // 72: Cast.Cast.UpdateWorkVideo:output_type -> Cast.UpdateWorkVideoResp + 18, // 73: Cast.Cast.WorkList:output_type -> Cast.WorkListResp + 21, // 74: Cast.Cast.WorkDetail:output_type -> Cast.WorkDetailResp + 72, // 75: Cast.Cast.UpdateStatus:output_type -> google.protobuf.Empty + 24, // 76: Cast.Cast.MediaAccounts:output_type -> Cast.MediaAccountsResp + 26, // 77: Cast.Cast.MediaWorks:output_type -> Cast.MediaWorksResp + 28, // 78: Cast.Cast.Publish:output_type -> Cast.PublishResp + 30, // 79: Cast.Cast.RePublish:output_type -> Cast.RePublishResp + 72, // 80: Cast.Cast.DelWork:output_type -> google.protobuf.Empty + 33, // 81: Cast.Cast.WorkInfo:output_type -> Cast.WorkInfoResp + 35, // 82: Cast.Cast.ArtistInfo:output_type -> Cast.ArtistInfoResp + 37, // 83: Cast.Cast.OAuthAccount:output_type -> Cast.OAuthAccountResp + 41, // 84: Cast.Cast.OAuthCodeToToken:output_type -> Cast.OAuthCodeToTokenResp + 43, // 85: Cast.Cast.RefreshToken:output_type -> Cast.RefreshTokenResp + 45, // 86: Cast.Cast.PublishMediaInfo:output_type -> Cast.PublishMediaInfoResp + 72, // 87: Cast.Cast.Test:output_type -> google.protobuf.Empty + 47, // 88: Cast.Cast.UpdateVideoScript:output_type -> Cast.UpdateVideoScriptResp + 49, // 89: Cast.Cast.GetVideoScript:output_type -> Cast.GetVideoScriptResp + 52, // 90: Cast.Cast.ListVideoScripts:output_type -> Cast.ListVideoScriptsResp + 72, // 91: Cast.Cast.DeleteVideoScript:output_type -> google.protobuf.Empty + 55, // 92: Cast.Cast.UpdateVideoScriptBatch:output_type -> Cast.UpdateVideoScriptBatchResp + 72, // 93: Cast.Cast.UpdateScriptStatus:output_type -> google.protobuf.Empty + 59, // 94: Cast.Cast.GetLayout:output_type -> Cast.GetLayoutResp + 72, // 95: Cast.Cast.SetLayout:output_type -> google.protobuf.Empty + 72, // 96: Cast.Cast.UpdatePrompt:output_type -> google.protobuf.Empty + 72, // 97: Cast.Cast.DeletePrompt:output_type -> google.protobuf.Empty + 63, // 98: Cast.Cast.GetPrompt:output_type -> Cast.GetPromptResp + 66, // 99: Cast.Cast.ListPrompts:output_type -> Cast.ListPromptsResp + 67, // [67:100] is the sub-list for method output_type + 34, // [34:67] is the sub-list for method input_type + 34, // [34:34] is the sub-list for extension type_name + 34, // [34:34] is the sub-list for extension extendee + 0, // [0:34] is the sub-list for field type_name } func init() { file_pb_fiee_cast_proto_init() } @@ -5392,7 +5836,7 @@ func file_pb_fiee_cast_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_pb_fiee_cast_proto_rawDesc), len(file_pb_fiee_cast_proto_rawDesc)), NumEnums: 4, - NumMessages: 61, + NumMessages: 68, NumExtensions: 0, NumServices: 1, }, diff --git a/api/cast/cast.pb.validate.go b/api/cast/cast.pb.validate.go index b73f36a..31fda2a 100644 --- a/api/cast/cast.pb.validate.go +++ b/api/cast/cast.pb.validate.go @@ -6744,6 +6744,770 @@ var _ interface { ErrorName() string } = GetLayoutRespValidationError{} +// Validate checks the field values on UpdatePromptReq with the rules defined +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. +func (m *UpdatePromptReq) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on UpdatePromptReq with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// UpdatePromptReqMultiError, or nil if none found. +func (m *UpdatePromptReq) ValidateAll() error { + return m.validate(true) +} + +func (m *UpdatePromptReq) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + // no validation rules for PromptUuid + + // no validation rules for Prompt + + // no validation rules for Category + + if len(errors) > 0 { + return UpdatePromptReqMultiError(errors) + } + + return nil +} + +// UpdatePromptReqMultiError is an error wrapping multiple validation errors +// returned by UpdatePromptReq.ValidateAll() if the designated constraints +// aren't met. +type UpdatePromptReqMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m UpdatePromptReqMultiError) Error() string { + msgs := make([]string, 0, len(m)) + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m UpdatePromptReqMultiError) AllErrors() []error { return m } + +// UpdatePromptReqValidationError is the validation error returned by +// UpdatePromptReq.Validate if the designated constraints aren't met. +type UpdatePromptReqValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e UpdatePromptReqValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e UpdatePromptReqValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e UpdatePromptReqValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e UpdatePromptReqValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e UpdatePromptReqValidationError) ErrorName() string { return "UpdatePromptReqValidationError" } + +// Error satisfies the builtin error interface +func (e UpdatePromptReqValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sUpdatePromptReq.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = UpdatePromptReqValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = UpdatePromptReqValidationError{} + +// Validate checks the field values on DeletePromptReq with the rules defined +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. +func (m *DeletePromptReq) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on DeletePromptReq with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// DeletePromptReqMultiError, or nil if none found. +func (m *DeletePromptReq) ValidateAll() error { + return m.validate(true) +} + +func (m *DeletePromptReq) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + // no validation rules for PromptUuid + + if len(errors) > 0 { + return DeletePromptReqMultiError(errors) + } + + return nil +} + +// DeletePromptReqMultiError is an error wrapping multiple validation errors +// returned by DeletePromptReq.ValidateAll() if the designated constraints +// aren't met. +type DeletePromptReqMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m DeletePromptReqMultiError) Error() string { + msgs := make([]string, 0, len(m)) + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m DeletePromptReqMultiError) AllErrors() []error { return m } + +// DeletePromptReqValidationError is the validation error returned by +// DeletePromptReq.Validate if the designated constraints aren't met. +type DeletePromptReqValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e DeletePromptReqValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e DeletePromptReqValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e DeletePromptReqValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e DeletePromptReqValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e DeletePromptReqValidationError) ErrorName() string { return "DeletePromptReqValidationError" } + +// Error satisfies the builtin error interface +func (e DeletePromptReqValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sDeletePromptReq.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = DeletePromptReqValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = DeletePromptReqValidationError{} + +// Validate checks the field values on GetPromptReq with the rules defined in +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. +func (m *GetPromptReq) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetPromptReq with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in GetPromptReqMultiError, or +// nil if none found. +func (m *GetPromptReq) ValidateAll() error { + return m.validate(true) +} + +func (m *GetPromptReq) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + // no validation rules for PromptUuid + + if len(errors) > 0 { + return GetPromptReqMultiError(errors) + } + + return nil +} + +// GetPromptReqMultiError is an error wrapping multiple validation errors +// returned by GetPromptReq.ValidateAll() if the designated constraints aren't met. +type GetPromptReqMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetPromptReqMultiError) Error() string { + msgs := make([]string, 0, len(m)) + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetPromptReqMultiError) AllErrors() []error { return m } + +// GetPromptReqValidationError is the validation error returned by +// GetPromptReq.Validate if the designated constraints aren't met. +type GetPromptReqValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e GetPromptReqValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e GetPromptReqValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e GetPromptReqValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e GetPromptReqValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e GetPromptReqValidationError) ErrorName() string { return "GetPromptReqValidationError" } + +// Error satisfies the builtin error interface +func (e GetPromptReqValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sGetPromptReq.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = GetPromptReqValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = GetPromptReqValidationError{} + +// Validate checks the field values on GetPromptResp with the rules defined in +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. +func (m *GetPromptResp) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetPromptResp with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in GetPromptRespMultiError, or +// nil if none found. +func (m *GetPromptResp) ValidateAll() error { + return m.validate(true) +} + +func (m *GetPromptResp) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + // no validation rules for PromptUuid + + // no validation rules for Prompt + + // no validation rules for Category + + if len(errors) > 0 { + return GetPromptRespMultiError(errors) + } + + return nil +} + +// GetPromptRespMultiError is an error wrapping multiple validation errors +// returned by GetPromptResp.ValidateAll() if the designated constraints +// aren't met. +type GetPromptRespMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetPromptRespMultiError) Error() string { + msgs := make([]string, 0, len(m)) + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetPromptRespMultiError) AllErrors() []error { return m } + +// GetPromptRespValidationError is the validation error returned by +// GetPromptResp.Validate if the designated constraints aren't met. +type GetPromptRespValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e GetPromptRespValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e GetPromptRespValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e GetPromptRespValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e GetPromptRespValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e GetPromptRespValidationError) ErrorName() string { return "GetPromptRespValidationError" } + +// Error satisfies the builtin error interface +func (e GetPromptRespValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sGetPromptResp.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = GetPromptRespValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = GetPromptRespValidationError{} + +// Validate checks the field values on ListPromptsReq with the rules defined in +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. +func (m *ListPromptsReq) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListPromptsReq with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in ListPromptsReqMultiError, +// or nil if none found. +func (m *ListPromptsReq) ValidateAll() error { + return m.validate(true) +} + +func (m *ListPromptsReq) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + // no validation rules for Prompt + + // no validation rules for Category + + // no validation rules for Page + + // no validation rules for PageSize + + if len(errors) > 0 { + return ListPromptsReqMultiError(errors) + } + + return nil +} + +// ListPromptsReqMultiError is an error wrapping multiple validation errors +// returned by ListPromptsReq.ValidateAll() if the designated constraints +// aren't met. +type ListPromptsReqMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListPromptsReqMultiError) Error() string { + msgs := make([]string, 0, len(m)) + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListPromptsReqMultiError) AllErrors() []error { return m } + +// ListPromptsReqValidationError is the validation error returned by +// ListPromptsReq.Validate if the designated constraints aren't met. +type ListPromptsReqValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e ListPromptsReqValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e ListPromptsReqValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e ListPromptsReqValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e ListPromptsReqValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e ListPromptsReqValidationError) ErrorName() string { return "ListPromptsReqValidationError" } + +// Error satisfies the builtin error interface +func (e ListPromptsReqValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sListPromptsReq.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = ListPromptsReqValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = ListPromptsReqValidationError{} + +// Validate checks the field values on PromptInfo with the rules defined in the +// proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. +func (m *PromptInfo) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on PromptInfo with the rules defined in +// the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in PromptInfoMultiError, or +// nil if none found. +func (m *PromptInfo) ValidateAll() error { + return m.validate(true) +} + +func (m *PromptInfo) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + // no validation rules for PromptUuid + + // no validation rules for Prompt + + // no validation rules for Category + + if len(errors) > 0 { + return PromptInfoMultiError(errors) + } + + return nil +} + +// PromptInfoMultiError is an error wrapping multiple validation errors +// returned by PromptInfo.ValidateAll() if the designated constraints aren't met. +type PromptInfoMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m PromptInfoMultiError) Error() string { + msgs := make([]string, 0, len(m)) + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m PromptInfoMultiError) AllErrors() []error { return m } + +// PromptInfoValidationError is the validation error returned by +// PromptInfo.Validate if the designated constraints aren't met. +type PromptInfoValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e PromptInfoValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e PromptInfoValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e PromptInfoValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e PromptInfoValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e PromptInfoValidationError) ErrorName() string { return "PromptInfoValidationError" } + +// Error satisfies the builtin error interface +func (e PromptInfoValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sPromptInfo.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = PromptInfoValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = PromptInfoValidationError{} + +// Validate checks the field values on ListPromptsResp with the rules defined +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. +func (m *ListPromptsResp) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListPromptsResp with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListPromptsRespMultiError, or nil if none found. +func (m *ListPromptsResp) ValidateAll() error { + return m.validate(true) +} + +func (m *ListPromptsResp) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + for idx, item := range m.GetData() { + _, _ = idx, item + + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ListPromptsRespValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ListPromptsRespValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return ListPromptsRespValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + } + } + } + + } + + // no validation rules for Count + + if len(errors) > 0 { + return ListPromptsRespMultiError(errors) + } + + return nil +} + +// ListPromptsRespMultiError is an error wrapping multiple validation errors +// returned by ListPromptsResp.ValidateAll() if the designated constraints +// aren't met. +type ListPromptsRespMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListPromptsRespMultiError) Error() string { + msgs := make([]string, 0, len(m)) + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListPromptsRespMultiError) AllErrors() []error { return m } + +// ListPromptsRespValidationError is the validation error returned by +// ListPromptsResp.Validate if the designated constraints aren't met. +type ListPromptsRespValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e ListPromptsRespValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e ListPromptsRespValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e ListPromptsRespValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e ListPromptsRespValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e ListPromptsRespValidationError) ErrorName() string { return "ListPromptsRespValidationError" } + +// Error satisfies the builtin error interface +func (e ListPromptsRespValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sListPromptsResp.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = ListPromptsRespValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = ListPromptsRespValidationError{} + // Validate checks the field values on WorkListResp_Info with the rules defined // in the proto definition for this message. If any rules are violated, the // first error encountered is returned, or nil if there are no violations. diff --git a/api/cast/cast_triple.pb.go b/api/cast/cast_triple.pb.go index 107f2ba..610ef08 100644 --- a/api/cast/cast_triple.pb.go +++ b/api/cast/cast_triple.pb.go @@ -59,6 +59,11 @@ type CastClient interface { UpdateScriptStatus(ctx context.Context, in *UpdateScriptStatusReq, opts ...grpc_go.CallOption) (*emptypb.Empty, common.ErrorWithAttachment) GetLayout(ctx context.Context, in *GetLayoutReq, opts ...grpc_go.CallOption) (*GetLayoutResp, common.ErrorWithAttachment) SetLayout(ctx context.Context, in *SetLayoutReq, opts ...grpc_go.CallOption) (*emptypb.Empty, common.ErrorWithAttachment) + // 关键词相关接口 + UpdatePrompt(ctx context.Context, in *UpdatePromptReq, opts ...grpc_go.CallOption) (*emptypb.Empty, common.ErrorWithAttachment) + DeletePrompt(ctx context.Context, in *DeletePromptReq, opts ...grpc_go.CallOption) (*emptypb.Empty, common.ErrorWithAttachment) + GetPrompt(ctx context.Context, in *GetPromptReq, opts ...grpc_go.CallOption) (*GetPromptResp, common.ErrorWithAttachment) + ListPrompts(ctx context.Context, in *ListPromptsReq, opts ...grpc_go.CallOption) (*ListPromptsResp, common.ErrorWithAttachment) } type castClient struct { @@ -95,6 +100,10 @@ type CastClientImpl struct { UpdateScriptStatus func(ctx context.Context, in *UpdateScriptStatusReq) (*emptypb.Empty, error) GetLayout func(ctx context.Context, in *GetLayoutReq) (*GetLayoutResp, error) SetLayout func(ctx context.Context, in *SetLayoutReq) (*emptypb.Empty, error) + UpdatePrompt func(ctx context.Context, in *UpdatePromptReq) (*emptypb.Empty, error) + DeletePrompt func(ctx context.Context, in *DeletePromptReq) (*emptypb.Empty, error) + GetPrompt func(ctx context.Context, in *GetPromptReq) (*GetPromptResp, error) + ListPrompts func(ctx context.Context, in *ListPromptsReq) (*ListPromptsResp, error) } func (c *CastClientImpl) GetDubboStub(cc *triple.TripleConn) CastClient { @@ -283,6 +292,30 @@ func (c *castClient) SetLayout(ctx context.Context, in *SetLayoutReq, opts ...gr return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/SetLayout", in, out) } +func (c *castClient) UpdatePrompt(ctx context.Context, in *UpdatePromptReq, opts ...grpc_go.CallOption) (*emptypb.Empty, common.ErrorWithAttachment) { + out := new(emptypb.Empty) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/UpdatePrompt", in, out) +} + +func (c *castClient) DeletePrompt(ctx context.Context, in *DeletePromptReq, opts ...grpc_go.CallOption) (*emptypb.Empty, common.ErrorWithAttachment) { + out := new(emptypb.Empty) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/DeletePrompt", in, out) +} + +func (c *castClient) GetPrompt(ctx context.Context, in *GetPromptReq, opts ...grpc_go.CallOption) (*GetPromptResp, common.ErrorWithAttachment) { + out := new(GetPromptResp) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/GetPrompt", in, out) +} + +func (c *castClient) ListPrompts(ctx context.Context, in *ListPromptsReq, opts ...grpc_go.CallOption) (*ListPromptsResp, common.ErrorWithAttachment) { + out := new(ListPromptsResp) + interfaceKey := ctx.Value(constant.InterfaceKey).(string) + return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/ListPrompts", in, out) +} + // CastServer is the server API for Cast service. // All implementations must embed UnimplementedCastServer // for forward compatibility @@ -317,6 +350,11 @@ type CastServer interface { UpdateScriptStatus(context.Context, *UpdateScriptStatusReq) (*emptypb.Empty, error) GetLayout(context.Context, *GetLayoutReq) (*GetLayoutResp, error) SetLayout(context.Context, *SetLayoutReq) (*emptypb.Empty, error) + // 关键词相关接口 + UpdatePrompt(context.Context, *UpdatePromptReq) (*emptypb.Empty, error) + DeletePrompt(context.Context, *DeletePromptReq) (*emptypb.Empty, error) + GetPrompt(context.Context, *GetPromptReq) (*GetPromptResp, error) + ListPrompts(context.Context, *ListPromptsReq) (*ListPromptsResp, error) mustEmbedUnimplementedCastServer() } @@ -412,6 +450,18 @@ func (UnimplementedCastServer) GetLayout(context.Context, *GetLayoutReq) (*GetLa func (UnimplementedCastServer) SetLayout(context.Context, *SetLayoutReq) (*emptypb.Empty, error) { return nil, status.Errorf(codes.Unimplemented, "method SetLayout not implemented") } +func (UnimplementedCastServer) UpdatePrompt(context.Context, *UpdatePromptReq) (*emptypb.Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method UpdatePrompt not implemented") +} +func (UnimplementedCastServer) DeletePrompt(context.Context, *DeletePromptReq) (*emptypb.Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method DeletePrompt not implemented") +} +func (UnimplementedCastServer) GetPrompt(context.Context, *GetPromptReq) (*GetPromptResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetPrompt not implemented") +} +func (UnimplementedCastServer) ListPrompts(context.Context, *ListPromptsReq) (*ListPromptsResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListPrompts not implemented") +} func (s *UnimplementedCastServer) XXX_SetProxyImpl(impl protocol.Invoker) { s.proxyImpl = impl } @@ -1281,6 +1331,122 @@ func _Cast_SetLayout_Handler(srv interface{}, ctx context.Context, dec func(inte return interceptor(ctx, in, info, handler) } +func _Cast_UpdatePrompt_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(UpdatePromptReq) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("UpdatePrompt", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _Cast_DeletePrompt_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(DeletePromptReq) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("DeletePrompt", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _Cast_GetPrompt_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(GetPromptReq) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("GetPrompt", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + +func _Cast_ListPrompts_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { + in := new(ListPromptsReq) + if err := dec(in); err != nil { + return nil, err + } + base := srv.(dubbo3.Dubbo3GrpcService) + args := []interface{}{} + args = append(args, in) + md, _ := metadata.FromIncomingContext(ctx) + invAttachment := make(map[string]interface{}, len(md)) + for k, v := range md { + invAttachment[k] = v + } + invo := invocation.NewRPCInvocation("ListPrompts", args, invAttachment) + if interceptor == nil { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + info := &grpc_go.UnaryServerInfo{ + Server: srv, + FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string), + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + result := base.XXX_GetProxyImpl().Invoke(ctx, invo) + return result, result.Error() + } + return interceptor(ctx, in, info, handler) +} + // Cast_ServiceDesc is the grpc_go.ServiceDesc for Cast service. // It's only intended for direct use with grpc_go.RegisterService, // and not to be introspected or modified (even as a copy) @@ -1404,6 +1570,22 @@ var Cast_ServiceDesc = grpc_go.ServiceDesc{ MethodName: "SetLayout", Handler: _Cast_SetLayout_Handler, }, + { + MethodName: "UpdatePrompt", + Handler: _Cast_UpdatePrompt_Handler, + }, + { + MethodName: "DeletePrompt", + Handler: _Cast_DeletePrompt_Handler, + }, + { + MethodName: "GetPrompt", + Handler: _Cast_GetPrompt_Handler, + }, + { + MethodName: "ListPrompts", + Handler: _Cast_ListPrompts_Handler, + }, }, Streams: []grpc_go.StreamDesc{}, Metadata: "pb/fiee/cast.proto", diff --git a/data/提示词.xlsx b/data/提示词.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..186179a23fc3c68d6b5956b473001f4c409ea39f GIT binary patch literal 10652 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 c{8h@&?6;g0