[Fix] TilSeeder charCount 실제 콘텐츠 길이 기반으로 계산#183
Conversation
PR Reviewer Guide 🔍Here are some key observations to aid the review process:
|
PR Code Suggestions ✨Explore these optional code suggestions:
|
|
🔴 반드시 수정
수정 방향:
그런데 실제 서비스는 LevelCalculator.calculateExperience()에서 contentLength * 0.2를 double 상태로 유지한 뒤 multiplier를 곱하고 마지막에 floor 처리합니다. 🟠 가급적 수정
|
🟠 지적 3 — 하드코딩 charCount 제거로 시드 데이터 시나리오가 바뀔 수 있음이 변경은 이번 PR의 의도된 결과입니다. 이전 시더는 그래프·잔디·레벨 모양이 바뀔 수 있다는 점은 동의합니다. 다만 그 변화는 "콘텐츠 기반이라는 실제 정책과 일치하는 올바른 데이터"로의 변화입니다. 이전 모양을 유지하기 위해 데모 화면의 시각적 모양은 콘텐츠 템플릿의 길이를 조정하는 것으로 제어할 수 있으므로, 코드 구조 수정 없이 데이터 레벨에서 해결 가능합니다. 🟡 지적 6 — 테스트 보강 필요이번 PR의 핵심 로직인 시더 자체는 DB·JPA·JdbcTemplate이 모두 필요한 통합 환경에서만 동작하므로, 요청하신 세 가지 검증( 이번 수정에서 통합 테스트 추가가 필요하다면 별도 이슈로 트래킹하는 것을 제안합니다. 수정 내용 요약
|
User description
🔎 What
실제 HTML 콘텐츠의 가시 텍스트 길이를 계산하여 XP 산정 및
watering_log.content_length에 반영한다.
🔗 Issue
✅ 체크리스트
PR Type
Bug fix, Enhancement
Description
TilSeeder의 charCount 계산 로직 개선
HTML 콘텐츠의 실제 가시 텍스트 길이 반영
XP 및 watering_log.content_length 정확성 향상
Diagram Walkthrough
flowchart LR A["기존 TilSeeder (하드코딩된 charCount)"] --> B{charCount 계산 방식 변경}; B -- "TilContentLength 유틸리티 사용" --> C["HTML 콘텐츠에서 가시 텍스트 길이 계산"]; C --> D["saveTil 메서드에서 charCount 및 XP 동적 계산"]; D --> E["정확한 watering_log.content_length 및 XP 반영"];File Walkthrough
TilSeeder.java
TilSeeder의 콘텐츠 길이 및 경험치 계산 로직 개선src/main/java/com/Rootin/global/config/seeder/TilSeeder.java
TilContentLength유틸리티 클래스를 임포트하여 TIL 콘텐츠 길이 계산에 활용합니다.MonthlyEntry및DailyEntry레코드에서charCount필드를 제거하여 하드코딩된 값 사용을 중단합니다.saveTil메서드의 시그니처를 변경하여charCount와exp파라미터를 제거하고, 메서드 내부에서 실제 콘텐츠 길이를기반으로
charCount와exp를 계산하도록 수정했습니다.saveTil호출 시exp값을 반환하도록 변경하여, 호출부에서 반환된exp를 누적 경험치 계산에 사용하도록업데이트했습니다.