diff --git a/src/main/java/kz/konturai/parser/controller/MarketingAnalysisV3Controller.java b/src/main/java/kz/konturai/parser/controller/MarketingAnalysisV3Controller.java index 50e6953..ec57b2a 100644 --- a/src/main/java/kz/konturai/parser/controller/MarketingAnalysisV3Controller.java +++ b/src/main/java/kz/konturai/parser/controller/MarketingAnalysisV3Controller.java @@ -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 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 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 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); } /**