|
@@ -1,5 +1,7 @@
|
|
|
package com.nova.brain.glass.viewmodel
|
|
package com.nova.brain.glass.viewmodel
|
|
|
|
|
|
|
|
|
|
+import android.os.Handler
|
|
|
|
|
+import android.os.Looper
|
|
|
import androidx.lifecycle.MutableLiveData
|
|
import androidx.lifecycle.MutableLiveData
|
|
|
import com.nova.brain.glass.model.ChatItem
|
|
import com.nova.brain.glass.model.ChatItem
|
|
|
import com.nova.brain.glass.model.ChatModel
|
|
import com.nova.brain.glass.model.ChatModel
|
|
@@ -7,11 +9,10 @@ import com.nova.brain.glass.model.ChatModel1
|
|
|
import com.nova.brain.glass.model.data.ChatData
|
|
import com.nova.brain.glass.model.data.ChatData
|
|
|
import com.nova.brain.glass.repository.Service
|
|
import com.nova.brain.glass.repository.Service
|
|
|
import com.xuqm.base.common.GsonImplHelp
|
|
import com.xuqm.base.common.GsonImplHelp
|
|
|
|
|
+import com.xuqm.base.common.LogHelper
|
|
|
import com.xuqm.base.di.manager.HttpManager
|
|
import com.xuqm.base.di.manager.HttpManager
|
|
|
import com.xuqm.base.viewmodel.BaseListViewModel
|
|
import com.xuqm.base.viewmodel.BaseListViewModel
|
|
|
import com.xuqm.base.viewmodel.callback.Response
|
|
import com.xuqm.base.viewmodel.callback.Response
|
|
|
-import android.os.Handler
|
|
|
|
|
-import android.os.Looper
|
|
|
|
|
import io.reactivex.disposables.Disposable
|
|
import io.reactivex.disposables.Disposable
|
|
|
import io.reactivex.schedulers.Schedulers
|
|
import io.reactivex.schedulers.Schedulers
|
|
|
|
|
|
|
@@ -21,20 +22,7 @@ class ChatVM : BaseListViewModel<ChatItem>() {
|
|
|
val chatItems: MutableList<ChatItem> = mutableListOf()
|
|
val chatItems: MutableList<ChatItem> = mutableListOf()
|
|
|
|
|
|
|
|
private var currentTask: Disposable? = null
|
|
private var currentTask: Disposable? = null
|
|
|
-
|
|
|
|
|
- private val questions = listOf(
|
|
|
|
|
- "我的代办任务有哪些?",
|
|
|
|
|
- "今天天气情况如何?",
|
|
|
|
|
- "当前设备状态如何?",
|
|
|
|
|
- "今日巡检计划是什么?",
|
|
|
|
|
- "有哪些待处理的告警?",
|
|
|
|
|
- "最近的维修记录有哪些?",
|
|
|
|
|
- "当前区域的安全评分是多少?",
|
|
|
|
|
- "有哪些设备需要维护?",
|
|
|
|
|
- "今天有哪些会议安排?",
|
|
|
|
|
- "当前库存状态如何?"
|
|
|
|
|
- )
|
|
|
|
|
- private var questionIndex = 0
|
|
|
|
|
|
|
+ private var itemIdCounter = 0
|
|
|
private var dataSourceReady = false
|
|
private var dataSourceReady = false
|
|
|
private val mainHandler = Handler(Looper.getMainLooper())
|
|
private val mainHandler = Handler(Looper.getMainLooper())
|
|
|
|
|
|
|
@@ -47,14 +35,11 @@ class ChatVM : BaseListViewModel<ChatItem>() {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- fun demoPostSse() {
|
|
|
|
|
|
|
+ fun demoPostSse(question: String) {
|
|
|
currentTask?.dispose()
|
|
currentTask?.dispose()
|
|
|
currentTask = null
|
|
currentTask = null
|
|
|
|
|
|
|
|
- val question = questions[questionIndex % questions.size]
|
|
|
|
|
- val itemId = questionIndex
|
|
|
|
|
- questionIndex++
|
|
|
|
|
-
|
|
|
|
|
|
|
+ val itemId = itemIdCounter++
|
|
|
chatItems.add(ChatItem(itemId, question, ""))
|
|
chatItems.add(ChatItem(itemId, question, ""))
|
|
|
if (dataSourceReady) invalidate()
|
|
if (dataSourceReady) invalidate()
|
|
|
loading.postValue(true)
|
|
loading.postValue(true)
|
|
@@ -70,11 +55,10 @@ class ChatVM : BaseListViewModel<ChatItem>() {
|
|
|
val l = line!!
|
|
val l = line!!
|
|
|
if (l.isNotEmpty()) {
|
|
if (l.isNotEmpty()) {
|
|
|
if (l.trimStart().startsWith("<")) {
|
|
if (l.trimStart().startsWith("<")) {
|
|
|
- // HTML响应(隧道断开),回退问题索引并在主线程重试
|
|
|
|
|
|
|
+ // HTML 响应(隧道断开),移除占位项并在主线程用相同问题重试
|
|
|
mainHandler.post {
|
|
mainHandler.post {
|
|
|
- questionIndex--
|
|
|
|
|
if (chatItems.isNotEmpty()) chatItems.removeAt(chatItems.size - 1)
|
|
if (chatItems.isNotEmpty()) chatItems.removeAt(chatItems.size - 1)
|
|
|
- demoPostSse()
|
|
|
|
|
|
|
+ demoPostSse(question)
|
|
|
}
|
|
}
|
|
|
loading.postValue(false)
|
|
loading.postValue(false)
|
|
|
return@use
|
|
return@use
|
|
@@ -104,6 +88,7 @@ class ChatVM : BaseListViewModel<ChatItem>() {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
} catch (e: Exception) {
|
|
} catch (e: Exception) {
|
|
|
|
|
+ LogHelper.e(">>>>11", e)
|
|
|
loading.postValue(false)
|
|
loading.postValue(false)
|
|
|
val errMsg = "AI反馈异常: ${e.message}"
|
|
val errMsg = "AI反馈异常: ${e.message}"
|
|
|
val lastIndex = chatItems.size - 1
|
|
val lastIndex = chatItems.size - 1
|
|
@@ -116,6 +101,7 @@ class ChatVM : BaseListViewModel<ChatItem>() {
|
|
|
}
|
|
}
|
|
|
loading.postValue(false)
|
|
loading.postValue(false)
|
|
|
}, { e ->
|
|
}, { e ->
|
|
|
|
|
+ LogHelper.e(">>>>22", e)
|
|
|
loading.postValue(false)
|
|
loading.postValue(false)
|
|
|
result.postValue("AI反馈异常: ${e.message}")
|
|
result.postValue("AI反馈异常: ${e.message}")
|
|
|
})
|
|
})
|