Skip to content

Commit 9c7a68d

Browse files
committed
fix(mlkit): prioritize trigger category labels in notification preview
1 parent 8df7328 commit 9c7a68d

1 file changed

Lines changed: 15 additions & 8 deletions

File tree

app/src/main/java/io/github/iokkai/ocularnode/util/MlKitFilterHelper.kt

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -106,13 +106,13 @@ object MlKitFilterHelper {
106106

107107
// 各分類獨立開關判斷:
108108
// 將偵測到的標籤映射至分類,並透過 LabelTranslator 進行多國語言在地化翻譯
109-
val detectedCategories = mutableSetOf<NotificationCategory>()
110-
val translatedLabels = allLabelTexts.map { LabelTranslator.translate(it) }
111-
112-
for (label in allLabelTexts) {
113-
val cat = LabelMapper.getCategory(label)
114-
detectedCategories.add(cat)
109+
val labeledItems = allLabelTexts.map { raw ->
110+
val cat = LabelMapper.getCategory(raw)
111+
val translated = LabelTranslator.translate(raw)
112+
Pair(cat, translated)
115113
}
114+
val detectedCategories = labeledItems.map { it.first }.toSet()
115+
val translatedLabels = labeledItems.map { it.second }
116116

117117
val enabledMatchedNotifCats = detectedCategories.filter { enabledCategories.contains(it) }
118118
val disabledMatchedNotifCats = detectedCategories.filter { !enabledCategories.contains(it) }
@@ -135,7 +135,14 @@ object MlKitFilterHelper {
135135
}
136136

137137
// 3. 組合 summaryText 顯示在地化分類與標籤內容
138-
val labelsPreview = translatedLabels.take(5).joinToString(", ")
138+
// 優先排序:將促成推播/過濾的核心分類標籤排在最前面,避免被周遭次要背景物品截斷
139+
val sortedTranslatedLabels = if (!shouldSuppressNotification) {
140+
labeledItems.sortedByDescending { enabledMatchedNotifCats.contains(it.first) }
141+
} else {
142+
labeledItems.sortedByDescending { disabledMatchedNotifCats.contains(it.first) }
143+
}.map { it.second }
144+
145+
val labelsPreview = sortedTranslatedLabels.take(5).joinToString(", ")
139146
val summaryText = if (!shouldSuppressNotification) {
140147
val enabledCatNames = enabledMatchedNotifCats.map { LabelTranslator.getCategoryDisplayName(context, it) }.distinct().joinToString("/")
141148
if (enabledCatNames.isNotBlank() && labelsPreview.isNotBlank()) {
@@ -155,7 +162,7 @@ object MlKitFilterHelper {
155162
}
156163

157164
AppLogger.d(TAG, "原始物件標籤: $allLabelTexts")
158-
AppLogger.d(TAG, "翻譯標籤: $translatedLabels")
165+
AppLogger.d(TAG, "翻譯標籤 (優先排序): $sortedTranslatedLabels")
159166
AppLogger.d(TAG, "偵測分類: $detectedCategories, 命中開啟推播分類: $enabledMatchedNotifCats, 關閉分類: $disabledMatchedNotifCats")
160167
AppLogger.d(TAG, "最終決定: suppressNotif=$shouldSuppressNotification, triggerRec=$shouldTriggerRecording (摘要: $summaryText)")
161168

0 commit comments

Comments
 (0)