Conversation
* chore(infra): 로컬 Codex 스킬 추적 제거 * docs(global): 프로젝트 README 온보딩 가이드 정비 * docs(global): README 저장소 clone 경로 수정 * docs(global): README 서비스 링크와 소개 이미지 추가 * docs(global): README 소개 이미지 크기 조정
* feat(report): 월간 리포트 V2 비교 대상 확정 로직 추가 현재 월 이전의 가장 최근 COMPLETED V2 리포트 조회 및 previousReportId 이벤트 전달, BASELINE·COMPARISON 분기 단위 테스트 추가 * feat(report): 월간 리포트 V2 비교 입력 조립 직전 리포트의 기간·콘텐츠·감정 통계 수집, 긍정 감정 비율 차이와 주요 감정 변화 계산 및 LLM 입력 전달 * feat(report): 월간 리포트 V2 비교 프롬프트 분기 추가 COMPARISON 프롬프트 로딩과 비교 입력 JSON 치환, 감정 비교 응답 검증 및 dev·prod 배포 환경 변수 설정 추가 * feat(report): 월간 리포트 V2에 감정 비교 결과 저장 및 조회 응답 수정 emotion_comparison JSONB 스냅샷 저장과 조회 응답 확장, LLM segment 정규화 및 V2 길이 검증 에러 코드 세분화 * feat(report): 월간 리포트 V2에 소셜 요약 저장 모델 추가 monthly_reports_v2에 social_summary JSONB 컬럼을 추가하고 기존 리포트의 비노출 기본값을 backfill함 * feat(report): 월간 소셜 반응 집계 쿼리 추가 사용자의 DailyReport에 받은 좋아요와 댓글·대댓글을 월별 친구 단위로 집계함. ACCEPTED 친구 관계를 기준으로 비친구, 탈퇴 사용자, 양방향 차단 관계와 삭제 댓글은 제외함 * feat(report): 월간 소셜 노출 및 랭킹 계산 추가 좋아요와 댓글 합계 및 참여 친구 조건으로 소셜 요약 노출 여부를 계산함. 반응 횟수 내림차순과 한국어 가나다순으로 최대 3명을 선정하고 displayOrder와 topRank를 분리해 공동 1위 강조를 지원함 * feat(report): 월간 소셜 요약 생성 파이프라인 연결 KST 월 범위의 소셜 반응을 집계해 MonthlySocialSummaryContent를 생성하고 confirmMonthlyText에서 기존 분석 결과와 함께 원자적으로 저장함. 소셜 집계 실패 시 리포트 실패 및 크리스탈 환불 흐름을 적용함 * feat(report): 월간 소셜 요약 조회 응답 추가 MonthlyReportResponseV2에 소셜 페이지 노출 정보와 좋아요·댓글 랭킹을 추가함 * refactor(report): 월간 리포트 locator 응답 계약 확장 V1/V2 공통 MonthlyReportLocatorResponse를 도입하고 id를 reportId로 명확화함. 나의 월간 리포트 조회 응답을 report와 previousReport 두 슬롯으로 확장해 버전별 상세 API 라우팅 기반을 마련함 * feat(report): 월간 리포트 현재·이전 locator 조회 추가 지난달은 상태와 무관하게, 지지난달은 COMPLETED 상태만 V2 우선·V1 fallback으로 탐색하는 resolver를 추가함 * fix(report): 월간 리포트 V1 조회 보안과 locator 계약 보완 V1 상세 조회에 인증 사용자 기반 소유권 검증과 403 응답을 추가함. locator API의 null·상태·version별 상세 경로를 문서화하고, 이전 월을 현재 범위에서 파생해 연도 경계를 안정적으로 처리함 * feat(report): 월간 리포트 V2 이미지 화풍 프리셋 선택 기능 추가 이미지 화풍 프리셋과 저장 컬럼을 추가하고, 최근 완료 리포트의 화풍을 제외해 결정적으로 프리셋을 선택·저장하도록 구현. 재시도 시 동일한 화풍을 유지하도록 보장하고 Repository, 선택기, 할당 서비스 테스트 추가. * feat(ai): 월간 이미지 프롬프트 조립기 추가 리포트 내용과 기간, 화풍 프리셋을 MonthlyImagePromptContext로 정규화하고 공통 안전 제약과 8개 화풍별 시각 지침을 합성하는 MonthlyImagePromptComposer 추가. 빈 입력 처리와 프리셋별 프롬프트 분기를 단위 테스트로 검증 * feat(ai): 이미지 클라이언트에 프롬프트 context 연동 OpenAiImageClient가 MonthlyImagePromptContext를 받아 composer로 프롬프트를 조립하도록 확장하고 기존 HTTP 요청 경로를 재사용 * feat(report): 월간 이미지 화풍 생성 파이프라인 연결 MonthlyReportGenerationListenerV2에서 프리셋을 할당하고 MonthlyImagePromptContext를 구성해 context 기반 이미지 생성을 호출하도록 전환 * refactor(ai): 월간 이미지 프롬프트 중복 경로 제거 MonthlyReportPromptLoader의 고정 이미지 템플릿과 OpenAiImageClient의 구형 DTO 기반 진입점을 제거하고, 이미지 프롬프트 생성을 MonthlyImagePromptComposer로 단일화 * feat(report): 월간 이미지 색상 팔레트 선택 기반 추가 8종의 색상 팔레트와 저장 컬럼을 추가하고 최근 완료 리포트의 팔레트를 제외하는 결정적 선택 로직 구현. 화풍과 팔레트를 함께 할당하며 기존 부분 저장 상태에서는 누락된 값만 보완하도록 확장 * feat(ai): 월간 이미지 색상 팔레트 생성 파이프라인 연결 저장된 화풍과 색상 팔레트를 MonthlyImagePromptContext로 전달하고 팔레트별 배경·주조색·강조색 지침을 이미지 프롬프트에 합성. 공통 색감 편향과 기본 파스텔 회귀를 제한하고 listener를 통합 visual preset 계약으로 전환 * test(ai): 월간 이미지 조합 및 팔레트 검증 강화 8개 화풍과 8개 팔레트의 전체 64개 프롬프트 조합이 서로 구분되는지 검증하고, 팔레트별 핵심 색상 표현이 유지되는지 테스트 추가 * refactor(report): 불필요한 월간 리포트 current 조회 제거 GET /api/v2/monthly-report/current와 전용 응답 DTO·query service 메서드·테스트를 제거하고 월간 리포트 locator 조회 경로를 기본 API로 단일화 * chore(global): 개인 Codex 스킬 추적 제거
관심 주제를 PREFERENCE로 고정하고 초기 크리스탈 1,000 지급
* feat(admin): 앱 버전 수정과 순서 검증 추가 관리자 앱 버전 화면에서 최신 버전 문자열을 직접 수정할 수 있도록 API와 UI를 추가하고, version 입력을 major.minor.patch 형식으로 제한함. 같은 플랫폼의 기존 다른 버전보다 낮거나 같은 값은 생성·수정 모두에서 차단하도록 검증을 보강함 * feat(admin): 앱 버전 이력 조회 페이지 추가 앱 버전 히스토리 조회 API와 관리자 페이지를 추가하고, 플랫폼 필터와 latest 상태, summary, 공지 항목, 생성·수정 시각을 함께 확인하도록 구성함
* feat(report): 리포트 생성 로그에 토큰 사용량 필드 추가 report_generation_logs에 input_tokens, output_tokens, total_tokens 컬럼을 추가하고 ReportGenerationLog의 토큰 기록 경로를 확장함. ReportGenerationLogService와 ReportGenerationLogRecorder에서 별도 트랜잭션 기반 토큰 사용량 기록을 지원하며, nullable usage 저장 케이스와 repository 매핑 테스트를 보강함 * feat(ai): Spring AI 토큰 사용량 추출 모델 추가 Spring AI ChatResponse의 Usage를 내부 LlmTokenUsage로 변환하는 공통 추출기를 추가하고, LLM 결과와 토큰 사용량을 함께 전달하기 위한 LlmGenerationResult를 추가함 * feat(report): 일간 리포트 토큰 사용량 기록 DailyReportLlmClient가 Spring AI ChatResponse에서 본문과 Usage를 함께 추출하도록 변경하고, DailyReportService에서 생성 로그에 input/output/total token 사용량을 기록함 * feat(report): 리포트 생성 로그에 thinking token 기록 report_generation_logs에 thinking_tokens 컬럼을 추가하고 Spring AI GoogleGenAiUsage의 thoughtsTokenCount를 LlmTokenUsage로 추출하도록 확장함. 주간 리포트 생성과 rewrite usage를 합산해 기록 * feat(report): 월간 리포트 토큰 사용량 기록 추가 MonthlyReportLlmClient와 MonthlyReportLlmClientV2가 ChatResponse 기반으로 LLM 응답 본문과 토큰 사용량을 함께 반환하도록 변경하고, 월간 리포트 생성 로그에 input_tokens, output_tokens, total_tokens, thinking_tokens를 기록하도록 추가 * feat(report): 유형 리포트 토큰 사용량 기록 유형 리포트의 Evidence Cards, Pattern Extraction, Type Selection, Content Generation 단계에서 ChatResponse 기반 토큰 사용량을 추출하고 각 generation log에 기록하도록 추가 * test(report): 리포트 생성 로그 토큰 기록 검증 보강 유형 리포트의 단계별 LLM 토큰 사용량 기록 순서를 검증하고, 월간 V2 listener 테스트에서 토큰 기록 후 성공 처리 순서를 확인하도록 보강
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
📝 요약(Summary)
#190 까지 반영하여 운영 서버에 배포합니다.
🔗 Related Issue
💬 공유사항
✅ PR Checklist
PR이 다음 요구 사항을 충족하는지 확인하세요.