열렬히.뛰기

코드분석 (4) : 레포트

Projects > 코드분석 (4) : 레포트

Domain

  • Domain이 없음.

repository

  • repository가 없음.

왜 Domain과 repository가 없는가?

Report는 독립적인 엔티티가 아닌, 일기(Diary)와 AI 감정 분석(DailyAiInfo) 데이터를 활용하여 분석된 보고서를 생성하는 기능을 제공합니다.

즉, Report 자체는 새로운 데이터를 생성하거나 저장할 필요가 없으며, 기존의 데이터를 집계하거나 조회하는 역할만 수행합니다.

따라서 Report에 별도의 도메인이나 레포지토리가 필요하지 않은 것입니다.

Diary와 DailyAiInfo 데이터는 이미 각각의 도메인과 리포지토리에서 관리되고 있기 때문에, 이 데이터를 조회하여 분석하는 서비스만 존재합니다.

service

1. ReportService 클래스

  • public WeekEmotionsResponseDTO weekReportEmotions() : 주간 감정 분석 보고서를 생성.
  • public WeekSummaryResponseDTO weekReportSummary() : 주간 요약 보고서를 생성

dto

  • dto가 없음. 왜?
  • 레포트 영역은 기존의 데이터를 기반으로 분석을 수행하고 결과를 반환
  • 이 과정에서 별도의 새로운 데이터를 전송하거나 저장할 필요가 없음.
  • ReportService는 주로 일기 데이터(DiaryRepository)와 AI 감정 분석 데이터(DailyAiInfoRepository)를 조회하여, 해당 데이터를 분석한 후 결과를 반환.
  • 이 과정에서 새로운 DTO(Data Transfer Object)를 생성할 필요가 없으며, 기존에 정의된 AI 관련 DTO(WeekEmotionsResponseDTO, WeekSummaryResponseDTO)를 그대로 사용.
  • 따라서 레포트 영역에서는 새로운 DTO가 필요하지 않다고 볼 수 있음.

controller

  • 사용자의 주간 감정 및 요약 보고서를 반환하는 REST API를 제공
  • 클라이언트가 요청한 기간에 대한 보고서 데이터를 분석하여 반환

클래스 어노테이션

java
@Tag(name = "Report", description = "레포트 서비스")
@RequiredArgsConstructor
@RequestMapping("/api/v1/report")
@RestController

주요 메서드 분석

  1. 주간 감정 분석 (getWeeksReportEmotions): 사용자가 특정 날짜를 기준으로 지난 14일간의 감정을 분석한 결과를 반환합니다.
  2. 주간 요약 보고서 (getWeeksReportSummary): 사용자의 특정 날짜를 기준으로 지난 14일 동안의 일기 내용을 요약한 보고서를 반환합니다.