diff --git a/src/main/java/com/sztzjy/linkCommerce/service/impl/CompetitiveEnvironmentAnalysisStepFourServiceImpl.java b/src/main/java/com/sztzjy/linkCommerce/service/impl/CompetitiveEnvironmentAnalysisStepFourServiceImpl.java index 6af17af..cb3e37b 100644 --- a/src/main/java/com/sztzjy/linkCommerce/service/impl/CompetitiveEnvironmentAnalysisStepFourServiceImpl.java +++ b/src/main/java/com/sztzjy/linkCommerce/service/impl/CompetitiveEnvironmentAnalysisStepFourServiceImpl.java @@ -20,7 +20,6 @@ import java.util.Set; public class CompetitiveEnvironmentAnalysisStepFourServiceImpl implements CompetitiveEnvironmentAnalysisStepFourService { private static final String TASK_KEY = "competitive-environment-analysis"; private static final Set STRATEGY_TYPES = new HashSet<>(Arrays.asList("so", "wo", "st", "wt")); - private static final Set EVALUATION_OPTIONS = new HashSet<>(Arrays.asList("优势明显,建议快速进入", "机会大于挑战,建议积极布局", "挑战与机会并存,需谨慎推进", "劣势突出,建议暂缓进入")); @Autowired private StudentTrainingAnswerService studentTrainingAnswerService; @@ -30,8 +29,8 @@ public class CompetitiveEnvironmentAnalysisStepFourServiceImpl implements Compet if (user.getRoleId() != 4) throw new ServiceException(HttpStatus.FORBIDDEN, "仅学生可进行实训校验"); StudentTrainingAnswer savedAnswer = studentTrainingAnswerService.get(TASK_KEY, null, user); if (savedAnswer == null || StringUtils.isBlank(savedAnswer.getStep3Answer())) throw new ServiceException(HttpStatus.BAD_REQUEST, "请先完成并保存第 3 步的 SWOT 策略"); - if (request == null || !EVALUATION_OPTIONS.contains(StringUtils.trimToEmpty(request.getOverallEvaluation())) || StringUtils.isBlank(request.getCoreRiskOne()) || StringUtils.isBlank(request.getCoreRiskTwo()) || StringUtils.isBlank(request.getConclusion())) { - throw new ServiceException(HttpStatus.BAD_REQUEST, "请完整填写总体判断、至少 2 个风险点和总结结论"); + if (request == null || StringUtils.isBlank(request.getCoreRiskOne()) || StringUtils.isBlank(request.getCoreRiskTwo()) || StringUtils.isBlank(request.getConclusion())) { + throw new ServiceException(HttpStatus.BAD_REQUEST, "请至少填写 2 个核心风险点和总结 SWOT 竞争环境评估结论"); } if (request.getPriorities() == null || request.getPriorities().size() != STRATEGY_TYPES.size()) throw new ServiceException(HttpStatus.BAD_REQUEST, "请完成 SO、WO、ST、WT 四类策略的优先级排序"); Set submittedTypes = new HashSet<>(); diff --git a/src/test/java/com/sztzjy/linkCommerce/service/impl/CompetitiveEnvironmentAnalysisStepFourServiceImplTest.java b/src/test/java/com/sztzjy/linkCommerce/service/impl/CompetitiveEnvironmentAnalysisStepFourServiceImplTest.java index 833345c..9cc2e8c 100644 --- a/src/test/java/com/sztzjy/linkCommerce/service/impl/CompetitiveEnvironmentAnalysisStepFourServiceImplTest.java +++ b/src/test/java/com/sztzjy/linkCommerce/service/impl/CompetitiveEnvironmentAnalysisStepFourServiceImplTest.java @@ -26,6 +26,16 @@ class CompetitiveEnvironmentAnalysisStepFourServiceImplTest { assertTrue(result.isValid()); } + @Test + void validateDoesNotRequireOverallCompetitiveEvaluation() { + CompetitiveEnvironmentAnalysisStepFourValidationRequest request = completedRequest(); + request.setOverallEvaluation(null); + + CompetitiveEnvironmentAnalysisStepFourValidationResult result = serviceWithStepThree().validate(request, student()); + + assertTrue(result.isValid()); + } + @Test void validateRejectsDuplicatePriorityAndMissingStepThree() { CompetitiveEnvironmentAnalysisStepFourValidationRequest incomplete = completedRequest();