From 26ef5d875d51c792f5cb3f508d7516702d29c0d9 Mon Sep 17 00:00:00 2001 From: slhafzjw Date: Sat, 23 May 2026 23:22:15 +0800 Subject: [PATCH] fix(impression): correct impression update behavior --- .../core/cognition/impression/Entity.kt | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/Partner-Core/src/main/java/work/slhaf/partner/core/cognition/impression/Entity.kt b/Partner-Core/src/main/java/work/slhaf/partner/core/cognition/impression/Entity.kt index c652b406..bef64540 100644 --- a/Partner-Core/src/main/java/work/slhaf/partner/core/cognition/impression/Entity.kt +++ b/Partner-Core/src/main/java/work/slhaf/partner/core/cognition/impression/Entity.kt @@ -33,24 +33,28 @@ class Entity @JvmOverloads constructor( ): IndexableData = impressionLock.withLock { if (newImpression == null) { impressions.computeIfAbsent(impression) { IndexableData(confidence) } - .also { it.confidence = confidence } + .also { + it.confidence = confidence + if (it.confidence >= 0.9) { + featureLock.withLock { features[impression] = it } + } + } } else { impressions.remove(impression) IndexableData(confidence).also { impressions[newImpression] = it - } - }.also { - if (it.confidence >= 0.9) { - featureLock.withLock { features[impression] = it } + if (it.confidence >= 0.9) { + featureLock.withLock { features[newImpression] = it } + } } } } fun updateFeature(feature: String, newFeature: String? = null, confidence: Double = 1.0) = featureLock.withLock { if (newFeature == null) { - features.computeIfAbsent(feature){ IndexableData(confidence) } + features.computeIfAbsent(feature) { IndexableData(confidence) } .also { it.confidence = confidence } - }else{ + } else { features.remove(feature) IndexableData(confidence).also { features[newFeature] = it