This commit is contained in:
arys
2026-02-24 17:33:12 +05:00
parent 94c3328282
commit 7edec59389
@@ -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);
}
/**