1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- package ticket
- import (
- _ "embed"
- "encoding/json"
- "fmt"
- "github.com/google/uuid"
- "github.com/lithammer/shortuuid/v4"
- "github.com/sashabaranov/go-openai"
- "google.golang.org/protobuf/encoding/protojson"
- "time"
- )
- func New(id string) *Ticket {
- return &Ticket{
- Id: id,
- Thread: []*Message{},
- }
- }
- func NewId(suffix string) string {
- now := time.Now()
- return fmt.Sprintf("t%s%d%03d-%s",
- suffix,
- now.Year(),
- now.YearDay(),
- shortuuid.NewWithAlphabet("23456789abcdefghijkmnopqrstuvwxy"))
- }
- func (t *Ticket) Marshal() ([]byte, error) {
- return protojson.Marshal(t)
- }
- func (t *Ticket) AddGPTResponseMessage(src *openai.ChatCompletionChoice) (*Message, error) {
- var (
- message = &Message{
- Id: uuid.NewString(),
- TicketId: t.Id,
- Provider: MessageProvider_GptMessageProvider,
- Body: src.Message.Content,
- Date: time.Now().UnixMilli(),
- }
- buf []byte
- err error
- )
- if buf, err = json.Marshal(src); err != nil {
- return nil, err
- }
- message.Raw = string(buf)
- t.Thread = append(t.Thread, message)
- return message, nil
- }
- //goland:noinspection GoUnusedExportedFunction
- func Unmarshal(d []byte) (*Ticket, error) {
- t := &Ticket{}
- if err := protojson.Unmarshal(d, t); err != nil {
- return nil, err
- }
- return t, nil
- }
|