fix(asr): 修复语音识别任务详情打开和过滤功能

- 修正了 goToTaskCenter 和 openTaskDetail 的 action 映射关系
- 添加了 IntentRecognizeHelper 中的请求日志记录
- 实现了 openTaskDetailWithFilter 动作的任务过滤功能
- 添加了 applyFilterAndRefresh 方法处理任务列表过滤
- 修复了空集合判断逻辑,使用 ifEmpty 替代 isEmpty 检查
- 更新了任务列表搜索参数传递机制
这个提交包含在:
徐勤民 2026-04-18 17:54:19 +08:00
父节点 2ef12e3b16
当前提交 5fec9c46ca
共有 4 个文件被更改,包括 35 次插入13 次删除

查看文件

@ -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 ->