target fix

This commit is contained in:
arys
2026-04-03 12:38:05 +05:00
parent c853f1ec2b
commit e1bceeea42
@@ -15,7 +15,7 @@ import java.util.List;
import java.util.Map;
@RestController
@RequestMapping("/api/marketing/campaigns")
@RequestMapping("/api/marketing/targeting")
@RequiredArgsConstructor
@Slf4j
public class TargetingCampaignController {
@@ -40,7 +40,7 @@ public class TargetingCampaignController {
return userId;
}
@PostMapping
@PostMapping("/campaigns")
public ResponseEntity<TargetingCampaign> createCampaign(
@RequestHeader(value = "X-User-Id", required = false) String userIdHeader,
@RequestHeader(value = "Authorization", required = false) String authHeader,
@@ -50,7 +50,7 @@ public class TargetingCampaignController {
return ResponseEntity.ok(campaignService.createCampaign(request, userId));
}
@GetMapping
@GetMapping("/campaigns")
public ResponseEntity<Page<TargetingCampaign>> getUserCampaigns(
@RequestHeader(value = "X-User-Id", required = false) String userIdHeader,
@RequestHeader(value = "Authorization", required = false) String authHeader,
@@ -61,7 +61,7 @@ public class TargetingCampaignController {
return ResponseEntity.ok(campaignService.getUserCampaigns(userId, page, size));
}
@GetMapping("/{id}")
@GetMapping("/campaigns/{id}")
public ResponseEntity<TargetingCampaign> getCampaign(
@RequestHeader(value = "X-User-Id", required = false) String userIdHeader,
@RequestHeader(value = "Authorization", required = false) String authHeader,
@@ -71,7 +71,7 @@ public class TargetingCampaignController {
return ResponseEntity.ok(campaignService.getCampaignById(id, userId));
}
@PostMapping("/{id}/pause")
@PostMapping("/campaigns/{id}/pause")
public ResponseEntity<TargetingCampaign> pauseCampaign(
@RequestHeader(value = "X-User-Id", required = false) String userIdHeader,
@RequestHeader(value = "Authorization", required = false) String authHeader,
@@ -81,7 +81,7 @@ public class TargetingCampaignController {
return ResponseEntity.ok(campaignService.pauseCampaign(id, userId));
}
@PostMapping("/{id}/resume")
@PostMapping("/campaigns/{id}/resume")
public ResponseEntity<TargetingCampaign> resumeCampaign(
@RequestHeader(value = "X-User-Id", required = false) String userIdHeader,
@RequestHeader(value = "Authorization", required = false) String authHeader,
@@ -91,7 +91,7 @@ public class TargetingCampaignController {
return ResponseEntity.ok(campaignService.resumeCampaign(id, userId));
}
@GetMapping("/{id}/insights")
@GetMapping("/campaigns/{id}/insights")
public ResponseEntity<TargetingPerformanceDto> getInsights(
@RequestHeader(value = "X-User-Id", required = false) String userIdHeader,
@RequestHeader(value = "Authorization", required = false) String authHeader,
@@ -102,7 +102,7 @@ public class TargetingCampaignController {
return ResponseEntity.ok(campaignService.getCampaignInsights(id, userId, datePreset));
}
@PostMapping("/{id}/sync-insights")
@PostMapping("/campaigns/{id}/sync-insights")
public ResponseEntity<Void> syncInsights(
@RequestHeader(value = "X-User-Id", required = false) String userIdHeader,
@RequestHeader(value = "Authorization", required = false) String authHeader,
@@ -114,7 +114,7 @@ public class TargetingCampaignController {
return ResponseEntity.ok().build();
}
@GetMapping("/{id}/ab-test/evaluate")
@GetMapping("/campaigns/{id}/ab-test/evaluate")
public ResponseEntity<String> evaluateAbTest(
@RequestHeader(value = "X-User-Id", required = false) String userIdHeader,
@RequestHeader(value = "Authorization", required = false) String authHeader,
@@ -125,9 +125,9 @@ public class TargetingCampaignController {
return ResponseEntity.ok(abTestingService.evaluateABTest(campaign));
}
// --- Audience tools (under /targeting) ---
// --- Audience endpoints ---
@PostMapping("/targeting/audience/segment")
@PostMapping("/audience/segment")
public ResponseEntity<List<AudienceSegmentDto>> segmentAudience(
@RequestHeader(value = "X-User-Id", required = false) String userIdHeader,
@RequestHeader(value = "Authorization", required = false) String authHeader,
@@ -138,7 +138,7 @@ public class TargetingCampaignController {
return ResponseEntity.ok(audienceService.segmentAudience(doc));
}
@PostMapping("/targeting/audience/estimate")
@PostMapping("/audience/estimate")
public ResponseEntity<Map<String, Long>> estimateAudience(
@RequestHeader(value = "X-User-Id", required = false) String userIdHeader,
@RequestHeader(value = "Authorization", required = false) String authHeader,
@@ -148,9 +148,9 @@ public class TargetingCampaignController {
return ResponseEntity.ok(audienceService.estimateAudienceSize(profile, platform));
}
// --- Budget tools (under /targeting) ---
// --- Budget endpoint ---
@PostMapping("/targeting/budget/optimize")
@PostMapping("/budget/optimize")
public ResponseEntity<BudgetOptimizationDto> optimizeBudget(
@RequestHeader(value = "X-User-Id", required = false) String userIdHeader,
@RequestHeader(value = "Authorization", required = false) String authHeader,
@@ -163,9 +163,9 @@ public class TargetingCampaignController {
return ResponseEntity.ok(budgetOptimizerService.optimizeBudget(campaign, doc));
}
// --- Account Selection tools (under /targeting) ---
// --- Account Selection endpoint ---
@PostMapping("/targeting/account/select")
@PostMapping("/account/select")
public ResponseEntity<Void> selectAdAccount(
@RequestHeader(value = "X-User-Id", required = false) String userIdHeader,
@RequestHeader(value = "Authorization", required = false) String authHeader,
@@ -180,9 +180,9 @@ public class TargetingCampaignController {
return ResponseEntity.ok().build();
}
// --- Campaign Status Polling ---
// ── Polling статуса ───────────────────────────────────────────────────────
@GetMapping("/{id}/status")
@GetMapping("/campaigns/{id}/status")
public ResponseEntity<Map<String, Object>> getCampaignStatus(
@RequestHeader(value = "X-User-Id", required = false) String userIdHeader,
@RequestHeader(value = "Authorization", required = false) String authHeader,
@@ -197,9 +197,9 @@ public class TargetingCampaignController {
));
}
// --- AI Predictions (Campaign-specific) ---
// ── AI Предсказания ───────────────────────────────────────────────────────
@GetMapping("/{id}/prediction")
@GetMapping("/campaigns/{id}/prediction")
public ResponseEntity<?> getPrediction(
@RequestHeader(value = "X-User-Id", required = false) String userIdHeader,
@RequestHeader(value = "Authorization", required = false) String authHeader,
@@ -211,7 +211,7 @@ public class TargetingCampaignController {
.orElse(ResponseEntity.notFound().build());
}
@PostMapping("/{id}/predict")
@PostMapping("/campaigns/{id}/predict")
public ResponseEntity<?> triggerPrediction(
@RequestHeader(value = "X-User-Id", required = false) String userIdHeader,
@RequestHeader(value = "Authorization", required = false) String authHeader,
@@ -223,9 +223,9 @@ public class TargetingCampaignController {
return ResponseEntity.accepted().body(Map.of("message", "Генерация предсказания запущена"));
}
// --- Insights ---
// ── Инсайты ───────────────────────────────────────────────────────────────
@GetMapping("/{id}/insights/raw")
@GetMapping("/campaigns/{id}/insights/raw")
public ResponseEntity<?> getRawInsights(
@RequestHeader(value = "X-User-Id", required = false) String userIdHeader,
@RequestHeader(value = "Authorization", required = false) String authHeader,
@@ -235,9 +235,9 @@ public class TargetingCampaignController {
return ResponseEntity.ok(campaign.getInsights() != null ? campaign.getInsights() : List.of());
}
// --- Retry ---
// ── Retry ─────────────────────────────────────────────────────────────────
@PostMapping("/{id}/retry")
@PostMapping("/campaigns/{id}/retry")
public ResponseEntity<TargetingCampaign> retryCampaign(
@RequestHeader(value = "X-User-Id", required = false) String userIdHeader,
@RequestHeader(value = "Authorization", required = false) String authHeader,
@@ -247,9 +247,9 @@ public class TargetingCampaignController {
return ResponseEntity.ok(campaignService.retryCampaign(id, userId));
}
// --- Budget and Audience Updates ---
// ── Обновление бюджета и аудитории ───────────────────────────────────────
@PutMapping("/{id}/budget")
@PutMapping("/campaigns/{id}/budget")
public ResponseEntity<TargetingCampaign> updateBudget(
@RequestHeader(value = "X-User-Id", required = false) String userIdHeader,
@RequestHeader(value = "Authorization", required = false) String authHeader,
@@ -261,7 +261,7 @@ public class TargetingCampaignController {
body.get("totalBudget"), body.get("dailyBudget")));
}
@PutMapping("/{id}/audience")
@PutMapping("/campaigns/{id}/audience")
public ResponseEntity<TargetingCampaign> updateAudience(
@RequestHeader(value = "X-User-Id", required = false) String userIdHeader,
@RequestHeader(value = "Authorization", required = false) String authHeader,
@@ -272,9 +272,9 @@ public class TargetingCampaignController {
return ResponseEntity.ok(campaignService.updateAudience(id, userId, audience));
}
// --- AdSets ---
// ── AdSets ───────────────────────────────────────────────────────────────
@GetMapping("/{id}/adsets")
@GetMapping("/campaigns/{id}/adsets")
public ResponseEntity<List<TargetingAdSet>> getAdSets(
@RequestHeader(value = "X-User-Id", required = false) String userIdHeader,
@RequestHeader(value = "Authorization", required = false) String authHeader,
@@ -283,7 +283,7 @@ public class TargetingCampaignController {
return ResponseEntity.ok(campaignService.getAdSets(id, userId));
}
@PutMapping("/{id}/adsets/{adSetId}")
@PutMapping("/campaigns/{id}/adsets/{adSetId}")
public ResponseEntity<TargetingCampaign> updateAdSet(
@RequestHeader(value = "X-User-Id", required = false) String userIdHeader,
@RequestHeader(value = "Authorization", required = false) String authHeader,