Repository navigation
fix(mindrecord): 기록일수를 일기만으로 세지 않는다 - #946
Merged
Merged
Conversation
주간리포트 요약의 "N일의 마음을 기록하셨네요" 가 `week[]` 에서 `isDiary` 인 날만 세고 있었다. 실서버 대조(2026-08-23) 결과 `week[]` 는 일기 외에 `DAILY_QUESTION`· `DEEP_THOUGHT` 원소도 싣는다. 데일리질문만 있는 날은 `daily-question[]` 로 되살아났지만 깊은 생각만 있는 날은 어디에서도 복구되지 않아, 기록이 있는데도 "0일" 이 나왔다. 문구가 세는 것은 "일기를 쓴 날" 이 아니라 "마음을 기록한 날" 이므로 종류를 가리지 않고 날짜 단위로 센다. `isDiary` 는 달력 점 표시에만 계속 쓴다. Closes #590
OnlyReadOneBook
approved these changes
Aug 23, 2026
OnlyReadOneBook
left a comment
Collaborator
There was a problem hiding this comment.
승인합니다. 비차단 1건 참고해 주세요.
- [normal] "깊은 생각만 있는 주" 는 이제 일수는 맞지만, 상단 카운트는 여전히 그 기록을 안 보여줍니다 — 시안은 3열입니다.
- 시안 700-35071의 상단 카운트는 데일리 질문·일기·깊은 생각 3열이고, 서버도 이미
deepThoughtAmount를 내려줍니다(오늘 실측 응답에서 확인). 이 PR 반영 후 "깊은 생각만 1건" 화면은데일리 질문 0 · 일기 0+ "1일의 마음" 조합이라(아래 실측 스크린샷), #590 의 원래 증상이던 카운트↔일수 불일치가 시각적으로는 한 갈래 남습니다. - FE 에는 깊은 생각 개념 자체가 아직 없어(
MindRecordCategory는 DAILY_QUESTION·DIARY·WEEKLY_REPORT 3값,WeeklyReportDto에deepThoughtAmount없음) 이 PR 범위(집계 함수)를 한참 벗어납니다 — 후속 이슈 분리를 권합니다.
- 시안 700-35071의 상단 카운트는 데일리 질문·일기·깊은 생각 3열이고, 서버도 이미
검증:
-
exact-HEAD(ef21fe7) CI 전부 green + 로컬 모듈 테스트 25개 ·
:app:compileDebugUnitTestKotlin통과 -
실기동 QA (실서버 + 에뮬레이터 Pixel_7_Claude_QA, QA823 계정) — 본문 시연과 같은 서버 상태를 재구성해 수정 전·후를 같은 데이터로 실측했습니다:
- 상태:
week=[{"day":23,"type":"DEEP_THOUGHT","emotion":null}],daily-question=[]— 본문 대조표(날짜당 1원소·비일기 타입 포함)와 오늘 실측도 일치 - 946 미포함 빌드(#937 head): "0일의 마음을 기록하셨네요" — 결함 재현
- 이 PR 빌드: "1일의 마음을 기록하셨네요" — 수정 확인 (아래)
- 같은 화면에서 달력 23일 칸은 점 없는 숫자 —
isDiary달력 점 규칙 유지도 화면으로 확인 - 테스트 데이터(깊은 생각·카테고리)는 삭제 완료(
week=[]복귀 확인)
- 상태:
-
aggregateWeekRecordsByDate의 일자 매칭·주 범위 밖 제외가keys에 그대로 적용되므로 종류 필터 제거로 유령 날짜가 유입될 경로 없음,isDiary소비처 전수 확인(잔존은 달력 점mapWeekDays뿐) -
시안 문구 취지 대조: 요약이 세는 대상이 "N일의 마음" 이라 종류 불문 날짜 집계가 문구·시안 취지와 정합
-
#937 과 같은 패키지지만 merge-tree 실측 충돌 없음
주간리포트 요약의 "N일의 마음을 기록하셨네요" 가 week[] 에서 isDiary 인 날만 세고 있었다. week[] 는 일기 외 종류도 싣는데, 문구가 세는 것은 "일기를 쓴 날" 이 아니라 "마음을 기록한 날" 이다. 다만 깊은 생각은 제외한다 — 기획에서 제거된 기능이라 서버가 week[] 에 계속 실어 보내도 앱은 없는 것으로 다룬다. 종류 판단은 매퍼가 countsAsRecord 로 접어 도메인에 올리고, 집계는 그 값만 본다. isDiary 는 달력 점 표시에만 계속 쓴다. Closes #590
This was referenced Aug 24, 2026
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.
Closes #590
이슈가 "미대조" 로 남겨 둔 서버 응답 대조를 먼저 하고, 그 결과로 수정 범위를 정했습니다.
대조 전문은 이슈 코멘트에 있습니다.
대조 결론
week[]는 레코드 배열이 아니라 날짜 배열이다. 하루 1개(최대 7개)만 실리고, 같은 날 일기가 여러 건이면 가장 큰diaryId하나만 남는다. 일기가 없는 날은DAILY_QUESTION·DEEP_THOUGHT가 실린다.week[][{day:23, type:"DIARY", emotion:"HAPPY"}][{day:23, type:"DAILY_QUESTION"}]그래서
diaryAmount(레코드 수)와week[](날짜 수)는 단위가 달라 나란히 비교할 값이 아니고,diaryAmount ≥ 1인데 그 날이week[]에 없는 상태는 재현되지 않았다. QA 15번의 "일기 1 … 0일" 은 #563·#524 로 이미 해소된 것으로 보인다.대조 중 찾은 결함
countRecordedDays가week[]에서isDiary인 날만 세고 있었다.문구가 세는 것은 "일기를 쓴 날" 이 아니라 "마음을 기록한 날" 이다.
수정 — 종류로 거르되, 기준을 도메인으로 올린다
일기만 세던 것을 고치되 깊은 생각은 제외한다. 기획에서 제거된 기능이라 서버가
week[]에 계속 실어 보내도 앱은 없는 것으로 다룬다.종류 판단은 화면이 아니라 매퍼가 한다 — 와이어의
type문자열 해석이 presentation 으로 새지 않도록.isDiary는 달력 점 표시에만 계속 쓴다 — 표시 규칙은 그대로다.테스트
WeeklyReportRecordedDaysTest12 → 17개, 모듈 전체 통과.회귀 방향 고정 확인
깊은 생각 제외를 되돌리면 실패한다.
시연
처음 올릴 때는 «깊은 생각만 있는 주» 를 만들어
0일 → 1일을 확인했었다. 그 시나리오는 이제 의도적으로 0일이 맞다. 남는 사용자 영향은 «데일리질문만 있는 날» 인데, 그 날짜는daily-question[]로도 복구되므로 화면 수치가 달라지지 않는다 — 이 PR 의 값은 집계 기준을 종류로 명시해 둔 것과 깊은 생각 유입을 막는 데 있다.서버 쪽에 남는 것
week[]가 하루 1개로 접히는 규칙은 명세에 없다. 같은 날 일기 2건 중 하나만 실리는 것이 의도인지, 그때 어느 원소가 남는지(현재는 가장 큰diaryId)를 확정해 두면 좋겠다 (Afternote-BE#131).