fix(asr): 修复语音识别任务详情打开和过滤功能
- 修正了 goToTaskCenter 和 openTaskDetail 的 action 映射关系 - 添加了 IntentRecognizeHelper 中的请求日志记录 - 实现了 openTaskDetailWithFilter 动作的任务过滤功能 - 添加了 applyFilterAndRefresh 方法处理任务列表过滤 - 修复了空集合判断逻辑,使用 ifEmpty 替代 isEmpty 检查 - 更新了任务列表搜索参数传递机制
这个提交包含在:
父节点
2ef12e3b16
当前提交
5fec9c46ca
@ -210,8 +210,8 @@ object AsrHelper : OfflineCmdListener {
|
||||
onSuccess = { action ->
|
||||
when (action.name) {
|
||||
"goToDecisionCenter" -> onGoToDecisionCenter?.invoke(action)
|
||||
"goToTaskCenter","openTaskDetailWithFilter" -> onGoToTaskCenter?.invoke(action)
|
||||
"openTaskDetail" -> onOpenTaskDetail?.invoke(action)
|
||||
"goToTaskCenter" -> onGoToTaskCenter?.invoke(action)
|
||||
"openTaskDetail", "openTaskDetailWithFilter" -> onOpenTaskDetail?.invoke(action)
|
||||
else -> Log.d(TAG, "unhandled action: $action")
|
||||
}
|
||||
},
|
||||
@ -293,4 +293,4 @@ object AsrHelper : OfflineCmdListener {
|
||||
isTtsConnected = false
|
||||
Log.d(TAG, "AsrHelper closed")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -6,6 +6,7 @@ import com.nova.brain.glass.helper.IntentRecognizeHelper.recognize
|
||||
import com.nova.brain.glass.model.RecognizeAction
|
||||
import com.nova.brain.glass.model.data.RecognizeData
|
||||
import com.nova.brain.glass.repository.Service
|
||||
import com.xuqm.base.common.LogHelper
|
||||
import com.xuqm.base.di.manager.HttpManager
|
||||
import com.xuqm.base.extensions.showMessage
|
||||
import io.reactivex.android.schedulers.AndroidSchedulers
|
||||
@ -40,8 +41,10 @@ object IntentRecognizeHelper {
|
||||
onComplete: () -> Unit = {}
|
||||
) {
|
||||
disposable?.dispose()
|
||||
val request = RecognizeData(text = text, scence = scence, extra = extra, actions = actions)
|
||||
LogHelper.d("IntentRecognize request: $request")
|
||||
disposable = HttpManager.getApi(MyApplication.appComponent1, Service::class.java)
|
||||
.recognize(RecognizeData(text = text, scence = scence, extra = extra, actions = actions))
|
||||
.recognize(request)
|
||||
.subscribeOn(Schedulers.io())
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe({ model ->
|
||||
@ -61,4 +64,4 @@ object IntentRecognizeHelper {
|
||||
disposable?.dispose()
|
||||
disposable = null
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -10,6 +10,7 @@ import com.nova.brain.glass.databinding.ActivityTaskListBinding
|
||||
import com.nova.brain.glass.helper.AsrHelper
|
||||
import com.nova.brain.glass.helper.OfflineCmdListener
|
||||
import com.nova.brain.glass.helper.OfflineCmdServiceHelper
|
||||
import com.nova.brain.glass.model.RecognizeAction
|
||||
import com.nova.brain.glass.model.TaskItem
|
||||
import com.nova.brain.glass.model.data.TaskExtraItem
|
||||
import com.nova.brain.glass.model.data.TaskListData
|
||||
@ -164,19 +165,23 @@ class TaskListActivity :
|
||||
OfflineCmdServiceHelper.addOnLineListener(offlineCmdListener)
|
||||
AsrHelper.scene = "list"
|
||||
AsrHelper.extraProvider = {
|
||||
if (visibleTaskExtras.isNotEmpty()) visibleTaskExtras else buildTaskExtra(viewModel.currentItems)
|
||||
visibleTaskExtras.ifEmpty { buildTaskExtra(viewModel.currentItems) }
|
||||
}
|
||||
AsrHelper.onGoToDecisionCenter = { action ->
|
||||
Log.d("TaskListActivity", "recognize result: $action")
|
||||
}
|
||||
AsrHelper.onOpenTaskDetail = { action ->
|
||||
val taskId = action.params.taskId
|
||||
val item = if (taskId.isNullOrEmpty()) {
|
||||
viewModel.currentItems.firstOrNull()
|
||||
if (action.name == "openTaskDetailWithFilter") {
|
||||
applyFilterAndRefresh(action)
|
||||
} else {
|
||||
viewModel.currentItems.firstOrNull { it.id == taskId }
|
||||
val taskId = action.params.taskId
|
||||
val item = if (taskId.isNullOrEmpty()) {
|
||||
viewModel.currentItems.firstOrNull()
|
||||
} else {
|
||||
viewModel.currentItems.firstOrNull { it.id == taskId }
|
||||
}
|
||||
item?.let { routeToTask(it) }
|
||||
}
|
||||
item?.let { routeToTask(it) }
|
||||
}
|
||||
}
|
||||
|
||||
@ -226,6 +231,21 @@ class TaskListActivity :
|
||||
private fun Map<String, String>.firstNotBlank(vararg keys: String): String =
|
||||
keys.firstNotNullOfOrNull { key -> this[key]?.takeIf { it.isNotBlank() } }.orEmpty()
|
||||
|
||||
private fun applyFilterAndRefresh(action: RecognizeAction) {
|
||||
viewModel.searchParams = TaskListData(
|
||||
taskType = action.params.taskType ?: "",
|
||||
keyword = action.params.keyword ?: "",
|
||||
dateRange = action.params.dateRange,
|
||||
dateType = action.params.dateTpye ?: 0,
|
||||
isOverdue = action.params.isOverdue ?: 2,
|
||||
tenantId = action.params.tenantId ?: 1,
|
||||
userId = action.params.userId ?: ""
|
||||
)
|
||||
pageStartPosition = 0
|
||||
binding.baseRecyclerView.scrollToPosition(0)
|
||||
viewModel.invalidate()
|
||||
}
|
||||
|
||||
private val adapter = object : CommonPagedAdapter<TaskItem>(R.layout.item_task_list) {
|
||||
override fun convert(holder: ViewHolder, item: TaskItem, position: Int) {
|
||||
val displayPosition = (position - pageStartPosition + 1).coerceAtLeast(1)
|
||||
|
||||
@ -24,8 +24,7 @@ class TaskListVM : BaseListViewModel<TaskItem>() {
|
||||
override fun loadData(page: Int, onResponse: Response<TaskItem>) {
|
||||
add(
|
||||
HttpManager.getApi(Service::class.java)
|
||||
.glassesTaskSearch(TaskListData(taskType = "", keyword = "", dateRange = 15, dateType = 0, isOverdue = 2, userId = "rokid", tenantId = 1))
|
||||
// .glassesTaskSearch(searchParams)
|
||||
.glassesTaskSearch(searchParams)
|
||||
.subscribeOn(Schedulers.io())
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe({ response ->
|
||||
|
||||
正在加载...
在新工单中引用
屏蔽一个用户