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