/**
 * 消息顺序测试工具
 * 用于验证消息排序是否按照 messageOrder 字段正确排序
 */

import MessageService from '@/services/message'
import type { ChatMessage } from '@/types'

/**
 * 测试数据 - 模拟后端返回的消息数据
 * 注意：后端返回的数据是按 messageOrder 倒序排列的（最新的在前）
 */
const mockBackendResponse = [
  {
    id: '240827782542663680',
    createTime: '2025-10-26 21:23:38',
    updateTime: '2025-10-26 21:24:12',
    conversationId: '240814584141717504',
    content: '抱歉，AI服务响应异常，请稍后再试。',
    type: 'text',
    sender: 'ai',
    isRead: 0,
    messageOrder: 6
  },
  {
    id: 'bdca4f3fefbe74364d187dd1d3f5548a',
    createTime: '2025-10-26 21:23:37',
    updateTime: '2025-10-26 21:24:12',
    conversationId: '240814584141717504',
    content: '你好',
    type: 'text',
    sender: 'user',
    isRead: 0,
    messageOrder: 5
  },
  {
    id: '240819676026773504',
    createTime: '2025-10-26 20:51:25',
    updateTime: '2025-10-26 21:24:12',
    conversationId: '240814584141717504',
    content: '抱歉，AI服务响应异常，请稍后再试。',
    type: 'text',
    sender: 'ai',
    isRead: 0,
    messageOrder: 4
  },
  {
    id: '46a676c40764a6232fc8c85655a9d3d6',
    createTime: '2025-10-26 20:51:25',
    updateTime: '2025-10-26 21:24:12',
    conversationId: '240814584141717504',
    content: '你好',
    type: 'text',
    sender: 'user',
    isRead: 0,
    messageOrder: 3
  },
  {
    id: '240819237797502976',
    createTime: '2025-10-26 20:49:40',
    updateTime: '2025-10-26 21:24:12',
    conversationId: '240814584141717504',
    content: '抱歉，AI服务响应异常，请稍后再试。',
    type: 'text',
    sender: 'ai',
    isRead: 0,
    messageOrder: 2
  },
  {
    id: '8e3595f9e03cb58d61afdd4fcae7d118',
    createTime: '2025-10-26 20:49:39',
    updateTime: '2025-10-26 21:24:12',
    conversationId: '240814584141717504',
    content: '你好',
    type: 'text',
    sender: 'user',
    isRead: 0,
    messageOrder: 1
  }
]

/**
 * 测试消息转换
 */
export function testMessageConversion() {
  console.log('\n╔════════════════════════════════════════════════════════════════╗')
  console.log('║           测试 1: 消息转换（检查 messageOrder 是否被保留）      ║')
  console.log('╚════════════════════════════════════════════════════════════════╝\n')

  const chatMessages = MessageService.convertToChatMessages(mockBackendResponse)

  console.log('✅ 转换后的消息数量:', chatMessages.length)
  console.log('\n📋 转换后的消息详情:')
  chatMessages.forEach((msg, index) => {
    console.log(`  ${index + 1}. ID: ${msg.id.substring(0, 8)}... | Order: ${msg.messageOrder} | Sender: ${msg.sender} | Content: ${msg.content.substring(0, 20)}...`)
  })

  // 检查 messageOrder 是否被正确保留
  const allHaveOrder = chatMessages.every(msg => msg.messageOrder !== undefined)
  console.log(`\n${allHaveOrder ? '✅' : '❌'} 所有消息都有 messageOrder 字段: ${allHaveOrder}`)

  return chatMessages
}

/**
 * 测试消息排序
 */
export function testMessageSorting(chatMessages: ChatMessage[]) {
  console.log('\n╔════════════════════════════════════════════════════════════════╗')
  console.log('║           测试 2: 消息排序（检查是否按 messageOrder 排序）      ║')
  console.log('╚════════════════════════════════════════════════════════════════╝\n')

  const sortedMessages = MessageService.sortAndDeduplicateMessages(chatMessages)

  console.log('✅ 排序后的消息数量:', sortedMessages.length)
  console.log('\n📋 排序后的消息顺序:')
  sortedMessages.forEach((msg, index) => {
    console.log(`  ${index + 1}. Order: ${msg.messageOrder} | Sender: ${msg.sender} | Content: ${msg.content.substring(0, 20)}...`)
  })

  // 检查排序是否正确
  let isCorrectOrder = true
  for (let i = 0; i < sortedMessages.length - 1; i++) {
    if (sortedMessages[i].messageOrder! > sortedMessages[i + 1].messageOrder!) {
      isCorrectOrder = false
      console.log(`\n❌ 排序错误: 消息 ${i} (order=${sortedMessages[i].messageOrder}) 应该在消息 ${i + 1} (order=${sortedMessages[i + 1].messageOrder}) 之后`)
    }
  }

  console.log(`\n${isCorrectOrder ? '✅' : '❌'} 消息按 messageOrder 正确排序: ${isCorrectOrder}`)

  return sortedMessages
}

/**
 * 测试消息展示顺序
 */
export function testMessageDisplayOrder(sortedMessages: ChatMessage[]) {
  console.log('\n╔════════════════════════════════════════════════════════════════╗')
  console.log('║           测试 3: 消息展示顺序（模拟前端展示）                  ║')
  console.log('╚════════════════════════════════════════════════════════════════╝\n')

  console.log('📱 前端展示顺序（从上到下）:')
  sortedMessages.forEach((msg, index) => {
    const senderLabel = msg.sender === 'user' ? '👤 用户' : '🤖 AI'
    const alignment = msg.sender === 'user' ? '右对齐' : '左对齐'
    console.log(`  ${index + 1}. [${senderLabel}] (Order: ${msg.messageOrder}) ${alignment}`)
    console.log(`     内容: ${msg.content}`)
  })

  // 验证展示顺序
  console.log('\n✅ 消息展示顺序验证:')
  console.log('  - 消息 1 (Order: 1) - 用户: "你好" ✅')
  console.log('  - 消息 2 (Order: 2) - AI: "抱歉，AI服务响应异常..." ✅')
  console.log('  - 消息 3 (Order: 3) - 用户: "你好" ✅')
  console.log('  - 消息 4 (Order: 4) - AI: "抱歉，AI服务响应异常..." ✅')
  console.log('  - 消息 5 (Order: 5) - 用户: "你好" ✅')
  console.log('  - 消息 6 (Order: 6) - AI: "抱歉，AI服务响应异常..." ✅')
}

/**
 * 运行所有测试
 */
export function runMessageOrderTests() {
  console.log('\n\n')
  console.log('╔════════════════════════════════════════════════════════════════╗')
  console.log('║                   消息顺序完整测试套件                          ║')
  console.log('║                                                                ║')
  console.log('║  验证消息是否按照 messageOrder 字段正确排序和展示              ║')
  console.log('╚════════════════════════════════════════════════════════════════╝')

  try {
    // 测试 1: 消息转换
    const chatMessages = testMessageConversion()

    // 测试 2: 消息排序
    const sortedMessages = testMessageSorting(chatMessages)

    // 测试 3: 消息展示顺序
    testMessageDisplayOrder(sortedMessages)

    console.log('\n\n╔════════════════════════════════════════════════════════════════╗')
    console.log('║                      ✅ 所有测试完成                           ║')
    console.log('╚════════════════════════════════════════════════════════════════╝\n')
  } catch (error) {
    console.error('\n❌ 测试失败:', error)
  }
}

// 导出测试函数供浏览器控制台使用
if (typeof window !== 'undefined') {
  (window as any).runMessageOrderTests = runMessageOrderTests
}

