import { defineStore } from 'pinia'
import { ref } from 'vue'
import axios from 'axios'

const api = axios.create({
  baseURL: '/api',
  timeout: 30000
})

export const useChatStore = defineStore('chat', () => {
  const messages = ref([])
  const isLoading = ref(false)
  const currentSession = ref(null)

  // Mock responses for when backend is not available
  const mockResponses = {
    '城市生命线': '城市生命线是指城市中维持城市正常运转的关键基础设施系统，包括供水、供电、供气、通信、交通等系统。这些系统如同城市的"生命线"，一旦发生故障，将对城市运行和居民生活产生重大影响。',
    '关键设施': '城市生命线关键设施包括：\n1. 供水系统：水厂、管网、加压站\n2. 供电系统：变电站、配电网\n3. 供气系统：门站、调压站、管网\n4. 通信系统：基站、光纤网络\n5. 交通系统：道路、桥梁、隧道',
    '消防安全': '消防安全隐患常见问题及处理措施：\n1. 消防通道堵塞 - 立即清理，保持畅通\n2. 灭火器过期 - 及时更换检修\n3. 电气线路老化 - 专业检测更换\n4. 易燃物品堆放 - 规范存储管理\n5. 消防设施损坏 - 定期检查维护',
    '排水': '如何平衡排水能力和生态环境保护：\n1. 采用海绵城市理念，增加透水面积\n2. 建设生态调蓄池，减缓雨水径流\n3. 推广透水铺装，促进雨水下渗\n4. 保护自然水系，维护生态平衡\n5. 雨污分流改造，提高污水处理效率'
  }

  const getMockResponse = (input) => {
    for (const [key, value] of Object.entries(mockResponses)) {
      if (input.includes(key)) {
        return value
      }
    }
    return `您好！关于"${input}"的问题，我正在为您查询相关资料。作为城市生命线智能助手，我可以帮助您：\n\n1. 查询城市生命线相关知识\n2. 识别潜在安全隐患\n3. 编制应急预案\n4. 撰写公文报告\n\n请问还有什么可以帮助您的？`
  }

  const sendMessage = async (content) => {
    isLoading.value = true
    try {
      const response = await api.post('/chat/send', {
        content,
        role: 'user',
        sessionId: currentSession.value
      })
      return response.data
    } catch (error) {
      console.log('Backend not available, using mock response')
      // Return mock response when backend is not available
      return {
        id: Date.now().toString(),
        content: getMockResponse(content),
        role: 'assistant',
        timestamp: new Date().toISOString()
      }
    } finally {
      isLoading.value = false
    }
  }

  const getHistory = async () => {
    try {
      const response = await api.get('/chat/history')
      messages.value = response.data
      return response.data
    } catch (error) {
      console.log('Backend not available')
      return []
    }
  }

  const getSuggestions = async () => {
    try {
      const response = await api.get('/chat/suggestions')
      return response.data
    } catch (error) {
      return [
        '城市生命线关键设施有哪些？',
        '消防安全隐患常见问题以及处理措施有哪些？',
        '如何平衡排水能力和生态环境保护？'
      ]
    }
  }

  const newChat = async () => {
    try {
      await api.post('/chat/new')
      messages.value = []
      currentSession.value = Date.now().toString()
    } catch (error) {
      messages.value = []
      currentSession.value = Date.now().toString()
    }
  }

  return {
    messages,
    isLoading,
    currentSession,
    sendMessage,
    getHistory,
    getSuggestions,
    newChat
  }
})
