fix: 优化竞争环境分析校验提示

main
陈沅 2 days ago
parent 2c7b83972a
commit 4fd2b43133

@ -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<String> STRATEGY_TYPES = new HashSet<>(Arrays.asList("so", "wo", "st", "wt"));
private static final Set<String> 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<String> submittedTypes = new HashSet<>();

@ -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();

Loading…
Cancel
Save