fix
This commit is contained in:
@@ -155,45 +155,29 @@ public class MarketingAnalysisV3Controller {
|
||||
* ГЕНЕРАЦИЯ СТРАТЕГИИ: Принимает настройки и файл логотипа (опционально)
|
||||
*/
|
||||
@PostMapping(value = "/{analysisId}/strategy/generate", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
|
||||
public ResponseEntity<?> generateStrategy(
|
||||
@RequestHeader(value = "Authorization", required = false) String authHeader,
|
||||
public ResponseEntity<MarketingStrategy> generateStrategy(
|
||||
@PathVariable String analysisId,
|
||||
@RequestPart("request") @Valid MarketingStrategyRequest request,
|
||||
@RequestPart(value = "logo", required = false) MultipartFile logo
|
||||
) {
|
||||
String userId = extractUserIdFromHeader(authHeader);
|
||||
if (userId == null) return unauthorizedResponse();
|
||||
// Данные стратегии принимаем как отдельную часть формы (в Postman это будет текст/JSON)
|
||||
@RequestPart("request") MarketingStrategyRequest request,
|
||||
// Файл принимаем как MultipartFile
|
||||
@RequestPart(value = "logo", required = false) MultipartFile logoFile,
|
||||
@RequestHeader("User-Id") String userId) {
|
||||
|
||||
try {
|
||||
// Проверяем доступ к анализу
|
||||
Optional<MarketingAnalysisV3Document> analysisOpt = analysisService.getAnalysisById(analysisId);
|
||||
if (analysisOpt.isEmpty()) return notFoundResponse("Анализ не найден");
|
||||
if (!analysisOpt.get().getUserId().equals(userId)) return forbiddenResponse();
|
||||
String uploadedLogoFilename = null;
|
||||
|
||||
String logoFilename = null;
|
||||
// Если юзер прикрепил логотип, сохраняем его в MinIO
|
||||
if (logo != null && !logo.isEmpty()) {
|
||||
String originalExt = logo.getOriginalFilename() != null ?
|
||||
logo.getOriginalFilename().substring(logo.getOriginalFilename().lastIndexOf(".")) : ".png";
|
||||
logoFilename = "logo_" + UUID.randomUUID() + originalExt;
|
||||
minIOService.uploadFile(logoFilename, logo.getBytes(), logo.getContentType());
|
||||
log.info("Логотип клиента успешно загружен в MinIO: {}", logoFilename);
|
||||
// Если файл прислали, сохраняем его в MinIO
|
||||
if (logoFile != null && !logoFile.isEmpty()) {
|
||||
try {
|
||||
uploadedLogoFilename = "logo_" + System.currentTimeMillis() + "_" + logoFile.getOriginalFilename();
|
||||
minIOService.uploadFile(uploadedLogoFilename, logoFile.getBytes(), logoFile.getContentType());
|
||||
} catch (Exception e) {
|
||||
return ResponseEntity.internalServerError().build();
|
||||
}
|
||||
|
||||
// Запускаем полную генерацию
|
||||
MarketingStrategy strategy = strategyService.generateStrategy(analysisId, request, userId, logoFilename);
|
||||
|
||||
Map<String, String> responseData = Map.of(
|
||||
"strategyId", strategy.getId(),
|
||||
"status", strategy.getStatus(),
|
||||
"message", "Генерация стратегии и медиафайлов успешно запущена"
|
||||
);
|
||||
return ResponseEntity.accepted().body(ApiResponse.success("Запущено", responseData));
|
||||
|
||||
} catch (Exception e) {
|
||||
log.error("Failed to generate strategy for analysis: {}", analysisId, e);
|
||||
return internalErrorResponse(e);
|
||||
}
|
||||
|
||||
// Передаем имя файла дальше в твой сервис
|
||||
MarketingStrategy strategy = strategyService.generateStrategy(analysisId, request, userId, uploadedLogoFilename);
|
||||
return ResponseEntity.ok(strategy);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user