class LlmFormatter::ConversationLlmFormatter < LlmFormatter::DefaultLlmFormatter
  def format
    sections = []
    sections << "Conversation ID: ##{@record.display_id}"
    sections << "Channel: #{@record.inbox.channel.name}"
    sections << 'Message History:'
    sections << if @record.messages.any?
                  build_messages
                else
                  'No messages in this conversation'
                end

    sections.join("\n")
  end

  private

  def build_messages
    return "No messages in this conversation\n" if @record.messages.empty?

    message_text = ''
    @record.messages.chat.order(created_at: :asc).each do |message|
      message_text << format_message(message)
    end
    message_text
  end

  def format_message(message)
    sender = message.message_type == 'incoming' ? 'User' : 'Support agent'
    "#{sender}: #{message.content}\n"
  end
end
