refactor(security): use explicit SCANNING check in processScanResult

Gemini review feedback: the previous != PUBLISHED condition was too broad
and could inadvertently overwrite terminal states like REJECTED or YANKED.
Now explicitly check == SCANNING before transitioning status.
This commit is contained in:
dongmucat 2026-05-11 13:56:08 +08:00
parent ec4598efec
commit cebad0bbd7
2 changed files with 3 additions and 3 deletions

View file

@ -109,9 +109,8 @@ public class SecurityScanService {
audit.setScannedAt(Instant.now(Clock.systemUTC()));
auditRepository.save(audit);
// Only transition status if the version is not already published (auto-publish flow)
if (version.getStatus() != SkillVersionStatus.PUBLISHED) {
// Set status based on requestedVisibility
// Only transition from SCANNING — leave PUBLISHED/REJECTED/YANKED untouched
if (version.getStatus() == SkillVersionStatus.SCANNING) {
if (version.getRequestedVisibility() == SkillVisibility.PRIVATE) {
version.setStatus(SkillVersionStatus.UPLOADED);
} else {

View file

@ -172,6 +172,7 @@ class SecurityScanServiceTest {
void processScanResult_updatesAuditAndMovesVersionToPendingReview() {
SecurityAudit audit = new SecurityAudit(42L, ScannerType.SKILL_SCANNER);
SkillVersion version = new SkillVersion(8L, "1.0.0", "publisher-1");
version.setStatus(SkillVersionStatus.SCANNING);
given(auditRepository.findLatestActiveByVersionIdAndScannerType(42L, ScannerType.SKILL_SCANNER))
.willReturn(Optional.of(audit));