[KT AIVLE] 빅프로젝트(13)

onlyJoon·2023년 6월 27일
0

KT AIVLE

목록 보기
29/31
post-thumbnail

작성일: 2023.06.27(화)

KT AIVLE AI 개발자 트랙 3기 과정의 마지막인 빅프로젝트를 진행하고 있습니다.


Daily Scrum

내 역할, 협업 내용, 나머지는 팀원 담당

What did you do yesterday?

  • 게시글 조회 시 댓글 정보 가져오기
  • 댓글 작성, 수정, 삭제 API
  • AWS S3 생성
  • AWS EC2 생성, RDS 연결
  • FE에 회원 관련 API 연동

What will you do today?

  • 첨부파일 관련 API
  • 게시판 페이징, 검색 필터 API
  • 회원 정보 수정 API
  • 비밀번호 초기화 API

Are there any impediments in your way?

  • 웹-AI 연결

What I did today

첨부파일 API

@RestController
@RequestMapping("/file")
@RequiredArgsConstructor
public class S3Controller {

    private final S3UploadService s3UploadService;

    @PostMapping("/upload")
    public ResponseEntity<Object> uploadFiles(
            @RequestParam(value = "fileType", defaultValue = "image") String fileType,
            @RequestPart(value = "files") List<MultipartFile> multipartFiles) {

        return ResponseEntity
                .status(HttpStatus.OK)
                .body(s3UploadService.uploadFiles(fileType, multipartFiles));
    }

    @DeleteMapping("/delete")
    public ResponseEntity<Object> deleteFile(
            @RequestBody S3DeleteDto s3DeleteDto) {
        return ResponseEntity
                .status(HttpStatus.OK)
                .body(s3UploadService.deleteFile(s3DeleteDto.getUploadFilePath(), s3DeleteDto.getUploadFileName()));
    }
}

API 테스트

  • postman에서 진행함

  • 헤더에 'Content-Type: multipart/form-data' 있어야 함

  • 바디에는 'form-data'로 파일들을 보내줘야 함

  • 여러 파일들을 보내줄 수 있으며, 해당 프로젝트에서는 image 파일만 받는 걸로 설정함

게시판 페이징 API


@RestController
@RequiredArgsConstructor
@RequestMapping("/posts")
@Slf4j
public class PostController {

    private final PostService postService;
	
    // 중략
    
    /**
     * 게시글 페이징 조회
     */
    @GetMapping("/postList")
    public Page<PostsRespondDto> getPostList(@RequestParam("page") int page) {
        Page<Post> posts = postService.getPostList(page,2);

        log.info("전체 페이지 번호 : {}",posts.getTotalPages());
        log.info("전체 데이터 수 : {}",posts.getTotalElements());


        List<PostsRespondDto> result = posts.stream()
                .map(p -> new PostsRespondDto(p))
                .collect(Collectors.toList());

        return new PageImpl<>(result);
    }

    /**
     * 게시글 전체 페이지 번호와 전체 데이터 수
     */
    @GetMapping("/pageNumber")
    public PageNumberDto pageNumber() {
        Page<Post> posts = postService.getPageList(2);
        int totalPages = posts.getTotalPages();
        long totalElements = posts.getTotalElements();

        return new PageNumberDto(totalPages,totalElements);
    }
}

기타

  • S3 IAM 사용자 엑세스 키를 받는 과정에서 secret key에 '/', '+' 등이 섞여있으면 작동하지 않는 현상이 있었음
    • 해당 문자가 secret key에 없을 때까지 사용자를 계속 생성하여 해결함
  • EC2에서 '인스턴스 상태검사 실패'가 떴었음. CPU사용률이 비정상적으로 높아진 것이 이유로 보임. 사용률이 높아진 이유는 찾지 못하였음
    • 인스턴스 중지 후 재시작하여 해결

마치며

조별 코칭 시간 때, 잘하고 있다는 피드백 외에 특별한 내용은 없었다. 이제 API는 90%이상 구현을 마쳤고, 자질구레한 것들만 남겨둔 상태이다.(회원탈퇴, 회원정보 수정 등)
가장 중요한 AI 파트는 담당 팀원들이 열심히 해준 덕에 잘 진행되고 있는 것으로 보인다. 이제 해당 모델이 실행되는 것을 Web과 연동하는 과정만 남은 상태인데, '실시간 카메라 영상'을 서비스 페이지에서 확인하는 기능, '모델의 탐지 내용'에 대한 로그를 서비스 페이지에 표시하는 기능 이 두 가지를 내일 다같이 모여서 끝낼 예정이다.

profile
A smooth sea never made a skilled sailor

0개의 댓글