fix: preserve real degraded research failures

This commit is contained in:
codychen123
2026-05-10 15:54:45 +08:00
parent 1ce2f5d273
commit 017c58d5bf
2 changed files with 6 additions and 1 deletions
@@ -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
)
}
@@ -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)))
}