فهرست منبع

ticket.Message

- add `id`
- add `flags`
Alexey Kim 1 سال پیش
والد
کامیت
498b1fd5b6
3فایلهای تغییر یافته به همراه73 افزوده شده و 61 حذف شده
  1. 27 35
      message.go
  2. 44 26
      ticket.pb.go
  3. 2 0
      ticket.proto

+ 27 - 35
message.go

@@ -1,16 +1,19 @@
 package ticket
 
 import (
+	"encoding/json"
+	"fmt"
 	"github.com/confluentinc/confluent-kafka-go/v2/kafka"
+	"github.com/google/uuid"
 	"github.com/kelindar/bitmap"
-)
-
-const (
-	messageHeaderFlags = "internal.flags"
+	"github.com/sashabaranov/go-openai"
+	"strings"
+	"time"
 )
 
 func NewKafkaMessage(src *kafka.Message) *Message {
 	m := &Message{
+		Id:       uuid.NewString(),
 		Provider: MessageProvider_EmailMessageProvider,
 		Body:     string(src.Value),
 		Raw:      string(src.Value),
@@ -28,42 +31,31 @@ func NewKafkaMessage(src *kafka.Message) *Message {
 	return m
 }
 
-func (m *Message) SetFlags(flags bitmap.Bitmap) {
-	var h *Message_Header
-	for i := range m.Headers {
-		if m.Headers[i].Key != messageHeaderFlags {
-			continue
-		}
-
-		h = m.Headers[i]
-		break
+func NewGPTResponseMessage(tid string, src *openai.ChatCompletionChoice) (*Message, error) {
+	tid = strings.TrimSpace(tid)
+	if tid == "" {
+		return nil, fmt.Errorf("illegal argument: ticket id must not be an emptry string")
 	}
 
-	if h == nil {
-		h = &Message_Header{
-			Key: messageHeaderFlags,
-		}
-
-		m.Headers = append(m.Headers, h)
+	raw, err := json.Marshal(src)
+	if err != nil {
+		return nil, err
 	}
 
-	h.Value = string(flags.ToBytes())
+	return &Message{
+		Id:       uuid.NewString(),
+		TicketId: tid,
+		Provider: MessageProvider_GptMessageProvider,
+		Body:     src.Message.Content,
+		Date:     time.Now().UnixMilli(),
+		Raw:      string(raw),
+	}, nil
 }
 
-func (m *Message) Flags() bitmap.Bitmap {
-	var h *Message_Header
-	for i := range m.Headers {
-		if m.Headers[i].Key != messageHeaderFlags {
-			continue
-		}
-
-		h = m.Headers[i]
-		break
-	}
-
-	if h == nil {
-		return bitmap.Bitmap{}
-	}
+func (m *Message) SetBitmap(flags bitmap.Bitmap) {
+	m.Flags = flags.ToBytes()
+}
 
-	return bitmap.FromBytes([]byte(h.Value))
+func (m *Message) GetBitmap() bitmap.Bitmap {
+	return bitmap.FromBytes(m.Flags)
 }

+ 44 - 26
ticket.pb.go

@@ -88,6 +88,8 @@ type Message struct {
 	Body     string            `protobuf:"bytes,3,opt,name=body,proto3" json:"body,omitempty"`
 	Date     int64             `protobuf:"varint,4,opt,name=date,proto3" json:"date,omitempty"`
 	Raw      string            `protobuf:"bytes,5,opt,name=raw,proto3" json:"raw,omitempty"`
+	Id       string            `protobuf:"bytes,6,opt,name=id,proto3" json:"id,omitempty"`
+	Flags    []byte            `protobuf:"bytes,7,opt,name=flags,proto3" json:"flags,omitempty"`
 	Headers  []*Message_Header `protobuf:"bytes,10,rep,name=headers,proto3" json:"headers,omitempty"`
 }
 
@@ -158,6 +160,20 @@ func (x *Message) GetRaw() string {
 	return ""
 }
 
+func (x *Message) GetId() string {
+	if x != nil {
+		return x.Id
+	}
+	return ""
+}
+
+func (x *Message) GetFlags() []byte {
+	if x != nil {
+		return x.Flags
+	}
+	return nil
+}
+
 func (x *Message) GetHeaders() []*Message_Header {
 	if x != nil {
 		return x.Headers
@@ -279,7 +295,7 @@ var File_ticket_proto protoreflect.FileDescriptor
 
 var file_ticket_proto_rawDesc = []byte{
 	0x0a, 0x0c, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x06,
-	0x74, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x22, 0xfa, 0x01, 0x0a, 0x07, 0x4d, 0x65, 0x73, 0x73, 0x61,
+	0x74, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x22, 0xa0, 0x02, 0x0a, 0x07, 0x4d, 0x65, 0x73, 0x73, 0x61,
 	0x67, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18,
 	0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64,
 	0x12, 0x33, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01,
@@ -289,31 +305,33 @@ var file_ticket_proto_rawDesc = []byte{
 	0x01, 0x28, 0x09, 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74,
 	0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x64, 0x61, 0x74, 0x65, 0x12, 0x10, 0x0a,
 	0x03, 0x72, 0x61, 0x77, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x72, 0x61, 0x77, 0x12,
-	0x30, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b,
-	0x32, 0x16, 0x2e, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72,
-	0x73, 0x1a, 0x30, 0x0a, 0x06, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x6b,
-	0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a,
-	0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61,
-	0x6c, 0x75, 0x65, 0x22, 0x41, 0x0a, 0x06, 0x54, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x0e, 0x0a,
-	0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x27, 0x0a,
-	0x06, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e,
-	0x74, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x06,
-	0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x2a, 0xa6, 0x01, 0x0a, 0x0f, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x16, 0x55, 0x6e,
-	0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x50, 0x72, 0x6f, 0x76,
-	0x69, 0x64, 0x65, 0x72, 0x10, 0x00, 0x12, 0x18, 0x0a, 0x14, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x10, 0x01,
-	0x12, 0x17, 0x0a, 0x13, 0x43, 0x68, 0x61, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x50,
-	0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x10, 0x02, 0x12, 0x16, 0x0a, 0x12, 0x47, 0x70, 0x74,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x10,
-	0x03, 0x12, 0x16, 0x0a, 0x12, 0x41, 0x70, 0x69, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x50,
-	0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x10, 0x04, 0x12, 0x14, 0x0a, 0x10, 0x46, 0x75, 0x6e,
-	0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x10, 0x05, 0x42,
-	0x2a, 0x0a, 0x17, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x73, 0x68, 0x6f, 0x70, 0x70, 0x65, 0x72, 0x2e,
-	0x63, 0x72, 0x6d, 0x2e, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x05, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x5a, 0x08, 0x2e, 0x2f, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x62, 0x06, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x33,
+	0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12,
+	0x14, 0x0a, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05,
+	0x66, 0x6c, 0x61, 0x67, 0x73, 0x12, 0x30, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73,
+	0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x2e,
+	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x52, 0x07,
+	0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x1a, 0x30, 0x0a, 0x06, 0x48, 0x65, 0x61, 0x64, 0x65,
+	0x72, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03,
+	0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01,
+	0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x41, 0x0a, 0x06, 0x54, 0x69, 0x63,
+	0x6b, 0x65, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
+	0x02, 0x69, 0x64, 0x12, 0x27, 0x0a, 0x06, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x18, 0x0a, 0x20,
+	0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x4d, 0x65, 0x73,
+	0x73, 0x61, 0x67, 0x65, 0x52, 0x06, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x2a, 0xa6, 0x01, 0x0a,
+	0x0f, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72,
+	0x12, 0x1a, 0x0a, 0x16, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61,
+	0x67, 0x65, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x10, 0x00, 0x12, 0x18, 0x0a, 0x14,
+	0x45, 0x6d, 0x61, 0x69, 0x6c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x50, 0x72, 0x6f, 0x76,
+	0x69, 0x64, 0x65, 0x72, 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, 0x43, 0x68, 0x61, 0x74, 0x4d, 0x65,
+	0x73, 0x73, 0x61, 0x67, 0x65, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x10, 0x02, 0x12,
+	0x16, 0x0a, 0x12, 0x47, 0x70, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x50, 0x72, 0x6f,
+	0x76, 0x69, 0x64, 0x65, 0x72, 0x10, 0x03, 0x12, 0x16, 0x0a, 0x12, 0x41, 0x70, 0x69, 0x4d, 0x65,
+	0x73, 0x73, 0x61, 0x67, 0x65, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x10, 0x04, 0x12,
+	0x14, 0x0a, 0x10, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x76, 0x69,
+	0x64, 0x65, 0x72, 0x10, 0x05, 0x42, 0x2a, 0x0a, 0x17, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x73, 0x68,
+	0x6f, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x63, 0x72, 0x6d, 0x2e, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x74,
+	0x42, 0x05, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x5a, 0x08, 0x2e, 0x2f, 0x74, 0x69, 0x63, 0x6b, 0x65,
+	0x74, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
 }
 
 var (

+ 2 - 0
ticket.proto

@@ -28,6 +28,8 @@ message Message {
   string body = 3 [json_name = "body"];
   int64 date = 4 [json_name = "date"];
   string raw = 5 [json_name = "raw"];
+  string id = 6 [json_name = "id"];
+  bytes flags = 7 [json_name = "flags"];
   repeated Header headers = 10 [json_name = "headers"];
 }