Загрузка данных


package App.controllers;

import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class SkillsScoreController {

    @PostMapping("/users/skills-score-all")
    public ResponseEntity<String> skillsScoreAll(@RequestBody(required = false) Object requestBody) {
        String response = """
                {
                  "is_surveyed": true,
                  "skills": [
                    {
                      "skill_name": "finance",
                      "skill_priority": 1,
                      "status_name": "ERROR",
                      "status_text": "Требует внимания"
                    },
                    {
                      "skill_name": "product_service",
                      "skill_priority": 2,
                      "status_name": "WARNING",
                      "status_text": "Держите в фокусе"
                    },
                    {
                      "skill_name": "marketing",
                      "skill_priority": 3,
                      "status_name": "SUCCESS",
                      "status_text": "Изучите по возможности"
                    },
                    {
                      "skill_name": "team",
                      "skill_priority": 4,
                      "status_name": "SUCCESS",
                      "status_text": "Изучите по возможности"
                    },
                    {
                      "skill_name": "strategy",
                      "skill_priority": 5,
                      "status_name": "SUCCESS",
                      "status_text": "Изучите по возможности"
                    },
                    {
                      "skill_name": "partnership",
                      "skill_priority": 6,
                      "status_name": "SUCCESS",
                      "status_text": "Изучите по возможности"
                    },
                    {
                      "skill_name": "it",
                      "skill_priority": 7,
                      "status_name": "WAITING",
                      "status_text": "Ждёт оценки"
                    }
                  ]
                }
                """;

        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.APPLICATION_JSON);

        return ResponseEntity.ok()
                .headers(headers)
                .body(response);
    }

    @PostMapping("/users/skills-score-single")
    public ResponseEntity<String> skillsScoreSingle(@RequestBody(required = false) Object requestBody) {
        String response = """
                {
                  "course": "/finance",
                  "status_name": "ERROR",
                  "status_text": "Требует внимания"
                }
                """;

        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.APPLICATION_JSON);

        return ResponseEntity.ok()
                .headers(headers)
                .body(response);
    }
}


package App.controllers;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.context.request.WebRequest;

@ControllerAdvice
public class GlobalExceptionHandler {

    private static final Logger log = LoggerFactory.getLogger(GlobalExceptionHandler.class);

    @ExceptionHandler(Exception.class)
    @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
    public ResponseEntity<String> handleAllExceptions(Exception ex, WebRequest request) {
        log.error("Необработанное исключение в заглушке", ex);

        String errorResponse = """
                {
                  "error": "Internal Server Error",
                  "message": "Произошла ошибка в заглушке"
                }
                """;

        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.APPLICATION_JSON);

        return new ResponseEntity<>(errorResponse, headers, HttpStatus.INTERNAL_SERVER_ERROR);
    }

    // Можно добавить специфические обработчики
    @ExceptionHandler(IllegalArgumentException.class)
    public ResponseEntity<String> handleIllegalArgument(IllegalArgumentException ex) {
        log.warn("Некорректный аргумент: {}", ex.getMessage());
        
        String errorResponse = """
                {
                  "error": "Bad Request",
                  "message": "%s"
                }
                """.formatted(ex.getMessage());

        return ResponseEntity.badRequest().body(errorResponse);
    }
}