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