diff --git a/backend/src/main/kotlin/com/wrbug/polymarketbot/service/copytrading/research/LeaderResearchSourceService.kt b/backend/src/main/kotlin/com/wrbug/polymarketbot/service/copytrading/research/LeaderResearchSourceService.kt index e84b926..cd9b4fa 100644 --- a/backend/src/main/kotlin/com/wrbug/polymarketbot/service/copytrading/research/LeaderResearchSourceService.kt +++ b/backend/src/main/kotlin/com/wrbug/polymarketbot/service/copytrading/research/LeaderResearchSourceService.kt @@ -398,6 +398,9 @@ class LeaderResearchSourceService( } private fun markActivityDerivedDegraded(result: LeaderResearchSourceRunResult): LeaderResearchSourceRunResult { + val expectedLimitation = result.status == LeaderResearchSourceStatus.SUCCESS && + result.errorClass == null && + result.errorMessage == null saveSourceState( sourceType = LeaderResearchSourceType.ACTIVITY_DERIVED, status = LeaderResearchSourceStatus.DEGRADED, @@ -411,7 +414,7 @@ class LeaderResearchSourceService( return result.copy( status = LeaderResearchSourceStatus.DEGRADED, limitation = GLOBAL_CAPTURE_DISABLED_LIMITATION, - expectedLimitation = true + expectedLimitation = expectedLimitation ) } diff --git a/backend/src/test/kotlin/com/wrbug/polymarketbot/service/copytrading/research/LeaderResearchSourceServiceTest.kt b/backend/src/test/kotlin/com/wrbug/polymarketbot/service/copytrading/research/LeaderResearchSourceServiceTest.kt index c442529..f44ccfd 100644 --- a/backend/src/test/kotlin/com/wrbug/polymarketbot/service/copytrading/research/LeaderResearchSourceServiceTest.kt +++ b/backend/src/test/kotlin/com/wrbug/polymarketbot/service/copytrading/research/LeaderResearchSourceServiceTest.kt @@ -74,6 +74,7 @@ class LeaderResearchSourceServiceTest { assertEquals(5, results.size) assertEquals(1, results.first { it.sourceType == LeaderResearchSourceType.WATCHLIST }.candidates.size) assertEquals(LeaderResearchSourceStatus.DEGRADED, results.first { it.sourceType == LeaderResearchSourceType.ACTIVITY_DERIVED }.status) + assertTrue(results.first { it.sourceType == LeaderResearchSourceType.ACTIVITY_DERIVED }.expectedLimitation) assertEquals(LeaderResearchSourceStatus.DISABLED, results.first { it.sourceType == LeaderResearchSourceType.GLOBAL_ACTIVITY_CAPTURE }.status) val preserved = results.first { it.sourceType == LeaderResearchSourceType.ACTIVITY_DERIVED }.candidates.single() assertTrue(preserved.locked) @@ -107,6 +108,7 @@ class LeaderResearchSourceServiceTest { assertEquals(LeaderResearchSourceStatus.DEGRADED, results.first { it.sourceType == LeaderResearchSourceType.WATCHLIST }.status) assertEquals(LeaderResearchSourceStatus.DEGRADED, results.first { it.sourceType == LeaderResearchSourceType.EXISTING_LEADER }.status) assertEquals(LeaderResearchSourceStatus.DEGRADED, results.first { it.sourceType == LeaderResearchSourceType.ACTIVITY_DERIVED }.status) + assertFalse(results.first { it.sourceType == LeaderResearchSourceType.ACTIVITY_DERIVED }.expectedLimitation) assertTrue(results.flatMap { it.candidates }.map { it.normalizedWallet }.containsAll(listOf(watchWallet, existingWallet, activityWallet))) }