| | |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.vincent.rsf.framework.exception.CoolException; |
| | | import com.vincent.rsf.server.ai.config.AiDefaults; |
| | | import com.vincent.rsf.server.ai.dto.AiParamValidateResultDto; |
| | | import com.vincent.rsf.server.ai.entity.AiParam; |
| | | import com.vincent.rsf.server.ai.mapper.AiParamMapper; |
| | | import com.vincent.rsf.server.ai.service.AiParamService; |
| | | import com.vincent.rsf.server.system.enums.StatusType; |
| | | import lombok.RequiredArgsConstructor; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.util.StringUtils; |
| | | |
| | | import java.text.SimpleDateFormat; |
| | | import java.util.Date; |
| | | |
| | | @Service("aiParamService") |
| | | @RequiredArgsConstructor |
| | | public class AiParamServiceImpl extends ServiceImpl<AiParamMapper, AiParam> implements AiParamService { |
| | | |
| | | private final AiParamValidationSupport aiParamValidationSupport; |
| | | |
| | | @Override |
| | | public AiParam getActiveParam(Long tenantId) { |
| | |
| | | fillDefaults(aiParam); |
| | | ensureBaseFields(aiParam); |
| | | ensureSingleActive(tenantId, null, aiParam.getStatus()); |
| | | applyValidation(aiParam); |
| | | } |
| | | |
| | | @Override |
| | |
| | | aiParam.setTenantId(current.getTenantId()); |
| | | ensureBaseFields(aiParam); |
| | | ensureSingleActive(tenantId, aiParam.getId(), aiParam.getStatus()); |
| | | applyValidation(aiParam); |
| | | } |
| | | |
| | | @Override |
| | | public AiParamValidateResultDto validateDraft(AiParam aiParam, Long tenantId) { |
| | | ensureTenantId(tenantId); |
| | | fillDefaults(aiParam); |
| | | ensureBaseFields(aiParam); |
| | | return aiParamValidationSupport.validate(aiParam); |
| | | } |
| | | |
| | | private void ensureBaseFields(AiParam aiParam) { |
| | |
| | | if (aiParam.getStreamingEnabled() == null) { |
| | | aiParam.setStreamingEnabled(Boolean.TRUE); |
| | | } |
| | | if (!StringUtils.hasText(aiParam.getValidateStatus())) { |
| | | aiParam.setValidateStatus(AiDefaults.PARAM_VALIDATE_NOT_TESTED); |
| | | } |
| | | if (aiParam.getStatus() == null) { |
| | | aiParam.setStatus(StatusType.ENABLE.val); |
| | | } |
| | | } |
| | | |
| | | private void applyValidation(AiParam aiParam) { |
| | | AiParamValidateResultDto validateResult = aiParamValidationSupport.validate(aiParam); |
| | | aiParam.setValidateStatus(validateResult.getStatus()); |
| | | aiParam.setLastValidateMessage(validateResult.getMessage()); |
| | | aiParam.setLastValidateElapsedMs(validateResult.getElapsedMs()); |
| | | aiParam.setLastValidateTime(parseDate(validateResult.getValidatedAt())); |
| | | if (!AiDefaults.PARAM_VALIDATE_VALID.equals(validateResult.getStatus())) { |
| | | throw new CoolException(validateResult.getMessage()); |
| | | } |
| | | } |
| | | |
| | | private Date parseDate(String dateTime) { |
| | | if (!StringUtils.hasText(dateTime)) { |
| | | return null; |
| | | } |
| | | try { |
| | | return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(dateTime); |
| | | } catch (Exception e) { |
| | | throw new CoolException("解析校验时间失败: " + e.getMessage()); |
| | | } |
| | | } |
| | | } |