You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
fix(mindrecord): 데일리질문 imageUrl 이 서버 계약에 없어 이미지 저장·조회 불가 — content HTML img 태그로 전환 #549
Swagger 전체에서 이미지 필드는 UserResponse.profileImageUrl·MusicSearchItemDto.albumImageUrl 뿐이고, 데일리질문·일기의 요청/응답 스키마 어디에도 imageUrl 이 없다. 대신 content 필드 설명에 본문 이미지 경로가 명시돼 있다.
본문 HTML 조각(UTF-8) … 허용 태그 예: h1~h3, p, div, em/i, u, s/del, strong/b, span, br, a[href], img[src|alt|width|height|style]
즉 서버 설계는 본문 이미지를 content HTML 의 img 태그로 담는 것이고, 별도 imageUrl 필드는 없다.
현재 클라 상태
DailyQuestionCreateRequestDto / DailyQuestionUpdateRequestDto 가 imageUrl 을 전송 → 서버가 무시
DailyQuestionListItemDto.imageUrl 로 응답을 읽음 → 항상 null
DailyQuestionWriteViewModel 의 uploadImage() 는 실제로 업로드까지 수행하고 KDoc 에 "첫 업로드 이미지는 등록 payload 의 imageUrl(목록 카드 썸네일) 로도 쓴다" 고 적혀 있으나, 그 URL 이 서버에 남지 않는다
결과적으로 작성 화면에서 이미지를 첨부해도 저장 후 사라지고, 목록 카드 썸네일도 뜨지 않는다.
수정 방향
업로드한 URL 을 content HTML 에 <img src="…"> 로 삽입하는 방식으로 전환한다. 목록 카드 썸네일이 필요하면 content 에서 첫 img[src] 를 추출하거나, 서버에 썸네일 필드 신설을 요청한다 (후자는 BE 협의 선행).
grep -rn "imageUrl" src/main/java | grep -i diary 결과가 위 선언 한 줄뿐이다 — BE 전체에서 Diary.imageUrl 에 값을 넣는 코드가 없다. DiaryService.createDiary·updateDiary 어느 쪽도 건드리지 않는다. 컬럼만 남은 상태다.
응답 쪽도 같다 — DiaryResponse·DiaryListResponse 에 imageUrl 필드가 없다. 그래서 FE DiaryListItemDto.imageUrl 은 항상 null 이다.
정리하면 일기 쪽 현재 상태
상태
DiaryCreateRequestDto.imageUrl 전송
서버가 받지 않음 (record 에 없음)
DiaryUpdateRequestDto.imageUrl 전송
서버가 받지 않음
Diary.imageUrl 컬럼
BE 전체에서 대입 0곳
DiaryResponse / DiaryListResponse
필드 없음 → FE 는 항상 null
데일리질문에 대해 이 이슈가 진단한 것과 완전히 같다. 수정 방향(«업로드한 URL 을 content HTML 에 <img src> 로 삽입, 썸네일이 필요하면 content 에서 첫 img[src] 추출») 도 그대로 적용된다 — content 필드 설명이 양쪽 다 같은 MindRecordHtmlSchema.CONTENT 를 쓰고 img[src|alt|width|height|style] 를 허용 태그로 명시한다.
제안 — 별도 이슈로 떼지 않고 여기서 함께
Note 가 이미 «같은 구조라면 함께 봐야 한다» 로 열어 둔 범위이고, 고치는 방식이 문자 그대로 같아서 두 이슈로 나누면 같은 판단을 두 번 하게 된다. 이 이슈 범위를 데일리질문 + 일기로 확정하는 편이 낫다고 본다. 담당도 같다.
Activity
OnlyReadOneBook commentedon Aug 24, 2026
일기도 같은 구조임을 BE 실코드로 확정했다
이 이슈 Note 의 «일기(
DiaryCreateRequest)도 동일하게imageUrl이 없고content설명은 같다 — 같은 구조라면 함께 봐야 한다» 를 서버 코드로 확인했다. PR #1007 리뷰 중 대조한 결과다.로컬 BE 체크아웃 (
main,0fb9e0b):요청 양쪽 모두
imageUrl이 없다 — 데일리질문과 같다. 여기까지는 이 이슈가 예고한 대로다.여기에 더해 서버가 받을 자리 자체가 없다는 것까지 확인됐다.
grep -rn "imageUrl" src/main/java | grep -i diary결과가 위 선언 한 줄뿐이다 — BE 전체에서Diary.imageUrl에 값을 넣는 코드가 없다.DiaryService.createDiary·updateDiary어느 쪽도 건드리지 않는다. 컬럼만 남은 상태다.응답 쪽도 같다 —
DiaryResponse·DiaryListResponse에imageUrl필드가 없다. 그래서 FEDiaryListItemDto.imageUrl은 항상 null 이다.정리하면 일기 쪽 현재 상태
DiaryCreateRequestDto.imageUrl전송DiaryUpdateRequestDto.imageUrl전송Diary.imageUrl컬럼DiaryResponse/DiaryListResponse데일리질문에 대해 이 이슈가 진단한 것과 완전히 같다. 수정 방향(«업로드한 URL 을
contentHTML 에<img src>로 삽입, 썸네일이 필요하면content에서 첫img[src]추출») 도 그대로 적용된다 —content필드 설명이 양쪽 다 같은MindRecordHtmlSchema.CONTENT를 쓰고img[src|alt|width|height|style]를 허용 태그로 명시한다.제안 — 별도 이슈로 떼지 않고 여기서 함께
Note 가 이미 «같은 구조라면 함께 봐야 한다» 로 열어 둔 범위이고, 고치는 방식이 문자 그대로 같아서 두 이슈로 나누면 같은 판단을 두 번 하게 된다. 이 이슈 범위를 데일리질문 + 일기로 확정하는 편이 낫다고 본다. 담당도 같다.
다르게 보는 지점이 있으면 말해 달라 — 그 경우 일기 몫만 후속 이슈로 떼겠다.
관련
date를 제거하는 PR. 같은 근거로imageUrl도 계약 밖이라 리뷰에서 함께 지적했다. 그 PR 은 수정 경로의 전송만 정리하면 되고, «대표 이미지를 어떻게 저장할 것인가» 는 이 이슈 몫이다.imageUrl유령 4건을 «이미 판정됐다» 며 범위 밖으로 뒀는데, 그 판정처가 이 이슈다.Merge develop into fix/716-failure-recovery
merge: develop 병합 — 데일리질문 imageUrl 폐기 반영, 충돌 2건 해소
fix(mindrecord): 리뷰 지적 3건 — 왕복 escape·삭제한 테스트·약한 가드
fix(mindrecord): 본문 이미지 fileKey 를 서버 값으로 쓰고 정리 3건
fix(mindrecord): 리뷰 지적 3건 — 왕복 escape·삭제한 테스트·약한 가드
fix(mindrecord): 업로드 fileKey 대응표를 SavedStateHandle 에 싣는다 (#1125)