From 5fec9c46caac488c1d5d6b055802fe2204a0a683 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BE=90=E5=8B=A4=E6=B0=91?= Date: Sat, 18 Apr 2026 17:54:19 +0800 Subject: [PATCH] =?UTF-8?q?fix(asr):=20=E4=BF=AE=E5=A4=8D=E8=AF=AD?= =?UTF-8?q?=E9=9F=B3=E8=AF=86=E5=88=AB=E4=BB=BB=E5=8A=A1=E8=AF=A6=E6=83=85?= =?UTF-8?q?=E6=89=93=E5=BC=80=E5=92=8C=E8=BF=87=E6=BB=A4=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 修正了 goToTaskCenter 和 openTaskDetail 的 action 映射关系 - 添加了 IntentRecognizeHelper 中的请求日志记录 - 实现了 openTaskDetailWithFilter 动作的任务过滤功能 - 添加了 applyFilterAndRefresh 方法处理任务列表过滤 - 修复了空集合判断逻辑,使用 ifEmpty 替代 isEmpty 检查 - 更新了任务列表搜索参数传递机制 --- .../com/nova/brain/glass/helper/AsrHelper.kt | 6 ++-- .../glass/helper/IntentRecognizeHelper.kt | 7 ++-- .../nova/brain/glass/ui/TaskListActivity.kt | 32 +++++++++++++++---- .../nova/brain/glass/viewmodel/TaskListVM.kt | 3 +- 4 files changed, 35 insertions(+), 13 deletions(-) diff --git a/app/src/main/java/com/nova/brain/glass/helper/AsrHelper.kt b/app/src/main/java/com/nova/brain/glass/helper/AsrHelper.kt index bd9cf81..adf288b 100644 --- a/app/src/main/java/com/nova/brain/glass/helper/AsrHelper.kt +++ b/app/src/main/java/com/nova/brain/glass/helper/AsrHelper.kt @@ -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") } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/nova/brain/glass/helper/IntentRecognizeHelper.kt b/app/src/main/java/com/nova/brain/glass/helper/IntentRecognizeHelper.kt index d06b2ea..dc9d83e 100644 --- a/app/src/main/java/com/nova/brain/glass/helper/IntentRecognizeHelper.kt +++ b/app/src/main/java/com/nova/brain/glass/helper/IntentRecognizeHelper.kt @@ -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 } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/nova/brain/glass/ui/TaskListActivity.kt b/app/src/main/java/com/nova/brain/glass/ui/TaskListActivity.kt index 0eff66b..d309125 100644 --- a/app/src/main/java/com/nova/brain/glass/ui/TaskListActivity.kt +++ b/app/src/main/java/com/nova/brain/glass/ui/TaskListActivity.kt @@ -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.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(R.layout.item_task_list) { override fun convert(holder: ViewHolder, item: TaskItem, position: Int) { val displayPosition = (position - pageStartPosition + 1).coerceAtLeast(1) diff --git a/app/src/main/java/com/nova/brain/glass/viewmodel/TaskListVM.kt b/app/src/main/java/com/nova/brain/glass/viewmodel/TaskListVM.kt index 7c809ae..a0210f2 100644 --- a/app/src/main/java/com/nova/brain/glass/viewmodel/TaskListVM.kt +++ b/app/src/main/java/com/nova/brain/glass/viewmodel/TaskListVM.kt @@ -24,8 +24,7 @@ class TaskListVM : BaseListViewModel() { override fun loadData(page: Int, onResponse: Response) { 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 ->