diff --git a/server/skillhub-domain/src/main/java/com/iflytek/skillhub/domain/review/ReviewService.java b/server/skillhub-domain/src/main/java/com/iflytek/skillhub/domain/review/ReviewService.java index bd31218a..56ea7884 100644 --- a/server/skillhub-domain/src/main/java/com/iflytek/skillhub/domain/review/ReviewService.java +++ b/server/skillhub-domain/src/main/java/com/iflytek/skillhub/domain/review/ReviewService.java @@ -101,7 +101,9 @@ public class ReviewService { throw new DomainForbiddenException("review.submit.no_permission"); } - if (skillVersion.getStatus() != SkillVersionStatus.DRAFT) { + // Support both DRAFT (legacy) and UPLOADED (new flow) status + if (skillVersion.getStatus() != SkillVersionStatus.DRAFT + && skillVersion.getStatus() != SkillVersionStatus.UPLOADED) { throw new DomainBadRequestException("review.submit.not_draft", skillVersionId); } @@ -137,7 +139,9 @@ public class ReviewService { .orElseThrow(() -> new DomainNotFoundException("namespace.not_found", skill.getNamespaceId())); assertNamespaceActive(namespace); - if (skillVersion.getStatus() != SkillVersionStatus.DRAFT) { + // Support both DRAFT (legacy) and UPLOADED (new flow) status + if (skillVersion.getStatus() != SkillVersionStatus.DRAFT + && skillVersion.getStatus() != SkillVersionStatus.UPLOADED) { throw new DomainBadRequestException("review.submit.not_draft", skillVersionId); } diff --git a/server/skillhub-domain/src/main/java/com/iflytek/skillhub/domain/skill/service/SkillReviewSubmitService.java b/server/skillhub-domain/src/main/java/com/iflytek/skillhub/domain/skill/service/SkillReviewSubmitService.java index 1ce26fd3..df8e9fd1 100644 --- a/server/skillhub-domain/src/main/java/com/iflytek/skillhub/domain/skill/service/SkillReviewSubmitService.java +++ b/server/skillhub-domain/src/main/java/com/iflytek/skillhub/domain/skill/service/SkillReviewSubmitService.java @@ -55,8 +55,10 @@ public class SkillReviewSubmitService { } /** - * Submit an UPLOADED version for review. - * Transitions version status from UPLOADED to PENDING_REVIEW. + * Submit an UPLOADED or DRAFT version for review. + * Transitions version status from UPLOADED/DRAFT to PENDING_REVIEW. + * + *
Supports both UPLOADED (new flow) and DRAFT (legacy compatibility) status. * * @param skillId the skill ID * @param versionId the version ID @@ -75,8 +77,9 @@ public class SkillReviewSubmitService { // Validate ownership assertCanManageLifecycle(skill, actorUserId, userNamespaceRoles); - // Validate version status - if (version.getStatus() != SkillVersionStatus.UPLOADED) { + // Validate version status - support both UPLOADED (new) and DRAFT (legacy) + if (version.getStatus() != SkillVersionStatus.UPLOADED + && version.getStatus() != SkillVersionStatus.DRAFT) { throw new DomainBadRequestException("error.skill.version.submit.notUploaded", version.getVersion()); } @@ -97,7 +100,9 @@ public class SkillReviewSubmitService { /** * Confirm publish for a PRIVATE skill version. - * Transitions version status from UPLOADED to PUBLISHED without review. + * Transitions version status from UPLOADED/DRAFT to PUBLISHED without review. + * + *
Supports both UPLOADED (new flow) and DRAFT (legacy compatibility) status.
*
* @param skillId the skill ID
* @param versionId the version ID
@@ -120,8 +125,9 @@ public class SkillReviewSubmitService {
throw new DomainBadRequestException("error.skill.confirm.notPrivate");
}
- // Validate version status
- if (version.getStatus() != SkillVersionStatus.UPLOADED) {
+ // Validate version status - support both UPLOADED (new) and DRAFT (legacy)
+ if (version.getStatus() != SkillVersionStatus.UPLOADED
+ && version.getStatus() != SkillVersionStatus.DRAFT) {
throw new DomainBadRequestException("error.skill.version.confirm.notUploaded", version.getVersion());
}
diff --git a/server/skillhub-domain/src/test/java/com/iflytek/skillhub/domain/skill/service/SkillReviewSubmitServiceTest.java b/server/skillhub-domain/src/test/java/com/iflytek/skillhub/domain/skill/service/SkillReviewSubmitServiceTest.java
index 1fc266b5..4f8f9565 100644
--- a/server/skillhub-domain/src/test/java/com/iflytek/skillhub/domain/skill/service/SkillReviewSubmitServiceTest.java
+++ b/server/skillhub-domain/src/test/java/com/iflytek/skillhub/domain/skill/service/SkillReviewSubmitServiceTest.java
@@ -88,15 +88,42 @@ class SkillReviewSubmitServiceTest {
}
@Test
- @DisplayName("should reject when version is not UPLOADED")
- void shouldRejectWhenNotUploaded() {
+ @DisplayName("should accept DRAFT version (legacy compatibility)")
+ void shouldAcceptDraftForLegacyCompatibility() {
+ // Given
+ Long skillId = 1L;
+ Long versionId = 100L;
+ String userId = "user-1";
+ Long namespaceId = 10L;
+
+ Skill skill = createSkill(skillId, userId, namespaceId, SkillVisibility.PRIVATE);
+ SkillVersion version = createVersion(versionId, skillId, SkillVersionStatus.DRAFT);
+
+ when(skillRepository.findById(skillId)).thenReturn(Optional.of(skill));
+ when(skillVersionRepository.findById(versionId)).thenReturn(Optional.of(version));
+ when(reviewTaskRepository.save(any())).thenAnswer(inv -> inv.getArgument(0));
+
+ Map