Files
supply-intelligence/internal/probe/state_machine.go
2026-05-12 18:49:52 +08:00

27 lines
747 B
Go

package probe
import "supply-intelligence/internal/domain"
func NextAccountStatus(current domain.AccountStatus, classification domain.ProbeClassification, consecutiveExplicitFailures int) domain.AccountStatus {
switch classification {
case domain.ProbeClassificationSuccess:
return domain.AccountStatusActive
case domain.ProbeClassificationExplicitFailure:
switch current {
case domain.AccountStatusActive:
return domain.AccountStatusSuspended
case domain.AccountStatusSuspended:
if consecutiveExplicitFailures >= 3 {
return domain.AccountStatusDisabled
}
return domain.AccountStatusSuspended
default:
return current
}
case domain.ProbeClassificationInconclusive:
fallthrough
default:
return current
}
}