Skip to content

Conversation

@1Seob
Copy link
Collaborator

@1Seob 1Seob commented Jan 2, 2026

📝 요약(Summary)

① weekly_reports 테이블 생성 및 WeeklyReport 엔티티 구현

  • status : PENDING, COMPLETED, FAILED, IN_PROGRESS

② 주간 리포트 생성 기능 구현

주간 리포트 생성의 경우에는 여러 가능성을 고려하여(생성 시간이 오래 걸리는 gpt-5-mini 모델의 채택 등) 비동기 형식으로 구현하였습니다.

전체 흐름 요약:

1. 요청 시점(동기, 짧은 트랜잭션)

  • 주간 리포트 작성 자격 검증 (지난 주 DailyReport 4회 이상 완료)
  • WeeklyReport(PENDING) 생성
  • 크리스탈 선차감(reserve) + CrystalLog(PENDING) 기록
  • 트랜잭션 내부에서 이벤트 발행
  • 즉시 { reportId, status=PENDING } 반환

2. 커밋 이후 비동기 처리

  • @TransactionalEventListener(AFTER_COMMIT) + @Async로 LLM 호출
  • 긴 AI 작업을 DB 트랜잭션 밖에서 수행

3. 결과 확정(짧은 트랜잭션)

  • 성공 시: WeeklyReport → COMPLETED, 크리스탈 로그 확정
  • 실패 시: WeeklyReport → FAILED, 크리스탈 환불 + 로그 처리

유틸 & 헬퍼 클래스들

  • WeekRangeCalculator: 저번 주의 범위 반환, 주어진 날짜가 속한 주의 범위 반환, 특정 달의 몇 주차인지 반환
  • WeeklyPromptLoader 및 구현체들: 프롬프트를 로드
  • WeeklyEntriesAssembler: 주간 리포트 생성 프롬프트의 입력값 생성에 활용
  • WeeklyReportLlmClient: 주간 리포트를 프롬프팅을 통해 생성
  • WeeklyReportGenerationListener: 비동기 리스너

③ 테스트용 오늘의 리포트 작성 API 변경

  • 프롬프트와 temperature는 개발 서버와 동일하게 고정, 질문과 답변만 입력받도록 수정

🔗 Related Issue

💬 공유사항

  • 에러에 대한 스웨거 문서화는 추후 공통 에러 응답 작업 시에 반영하도록 하겠습니다.
  • 프롬프트와 ai 모델은 추가적인 테스트를 통해 확정하면 되겠습니다.

✅ PR Checklist

PR이 다음 요구 사항을 충족하는지 확인하세요.

  • PR 제목을 커밋 메시지 컨벤션에 맞게 작성했습니다.

1Seob added 19 commits January 1, 2026 15:51
이번 주의 범위 반환, 주어진 날짜가 속한 주의 범위 반환
…to 구현

주간 리포트 생성 프롬프트의 입력값 생성에 활용
프롬프팅을 통해 OpenAI API를 호출하여 주간 리포트를 생성
이번 주의 주간 리포트가 있으면 반환하고, 없으면 PENDING으로 생성하는 서비스
주간 리포트는 저번주의 기록을 통해서 생성하는 것
저번 주에 4회 이상 작성했어야 생성 가능
트랜잭션 안에서 event publish하도록 수정, weekly_reports 테이블에서 discovered, good, improved 컬럼의 not null 제약 제거 등
프롬프트와 temperature는 개발 서버와 동일하게 고정, 질문과 답변만 입력받도록 수정
}

@GetMapping("/{id}")
@PermitAll
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이 부분 PermitAll로 하신 이유가 따로 있으신가요?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

단순히 조회용이라서 열어두긴 했는데, 인증을 걸어두도록 하겠습니다!

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

수정 완료했습니다!

@1Seob 1Seob merged commit 7575356 into develop Jan 2, 2026
1 check passed
@1Seob 1Seob deleted the feat/weekly-report branch January 2, 2026 18:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Epic] 주간 리포트 구현

3 participants