Skip to content

feat: 작성자 줄 렌더 버그 수정 + 편집자 표기 + 첨부 사진 버그 둘 (v0.7.0) - #41

Merged
eigger merged 1 commit into
masterfrom
feat/event-editor-audit-and-attachment-fixes
Sep 3, 2026
Merged

feat: 작성자 줄 렌더 버그 수정 + 편집자 표기 + 첨부 사진 버그 둘 (v0.7.0)#41
eigger merged 1 commit into
masterfrom
feat/event-editor-audit-and-attachment-fixes

Conversation

@eigger

@eigger eigger commented Sep 3, 2026

Copy link
Copy Markdown
Owner

"작성자가 없다"는 리포트를 조사하다 진짜 원인을 찾았고, 그러면서 걸려나온 첨부 사진 버그 둘도 함께 고쳤습니다.

1. "{이름} 작성" 줄이 v0.6.0에서 한 번도 뜬 적이 없던 버그

eventAuditParts(draft, ...)draft.createdBy?.name을 읽는데, EventDetailDraft는 그 필드를 createdByName(평평한 문자열)으로 갖고 있습니다 — **존재하지 않는 프로퍼티를 읽어 항상 undefined**였습니다. "수정" 줄만 뜨고 "작성" 줄은 안 뜬다는 리포트가 정확히 이 버그였습니다.

API 응답 모양(createdBy: {id, name})과 UI 드래프트 모양(createdByName: string)이 이름은 비슷한데 실제 모양이 달라서 헷갈렸고, 둘 다 optional이라 TS도 조용히 통과시켰습니다.

2. "수정한 사람" 이름 추가

Event.updatedById 신규 컬럼(+ 마이그레이션) — PATCH할 때마다 세션 사용자로 갱신되고, 생성 직후엔 작성자와 같습니다.

보람 작성 · 별이 · 9월 3일 10:02 수정

편집자가 작성자와 다를 때만 이름을 넣습니다 — 같으면 "보람 작성 · 보람 · ... 수정"처럼 반복되지 않게.

3. 첨부 사진 상세 그리드가 이상하게 벌어져 보이던 버그

.attachment-thumb이 두 군데 정의돼 있었습니다 — 하나는 일반 썸네일용(56px), 하나는 아무 컴포넌트도 쓰지 않는 죽은 코드(garage AttachmentList 컨벤션을 그대로 옮겨왔지만 실제로 안 쓰임, 84px 고정 flex box). 후자가 파일 뒤쪽에 있어 캐스케이드에서 이겨, 반응형이어야 할 상세 그리드 썸네일이 84px로 찌그러져 그리드 셀 안에 작게 떠 있었습니다.

리네임 대신 죽은 블록 78줄을 grep으로 무사용 확인 후 통째로 삭제했습니다.

4. 이력 목록 첨부 미리보기 개편

기존엔 사진 1장 + "+N"이었고, 그 영역을 눌러도 행 전체와 똑같이 상세만 열렸습니다.

  • 최대 4장까지 보여줍니다
  • 사진을 누르면 바로 라이트박스가 뜹니다
  • 행의 나머지를 누르면 상세가 열립니다 (기존 동작 유지)

<button> 안에 <button>은 유효하지 않은 HTML이라, 행 wrapper를 role="button" tabIndex={0}<div>로 바꾸고 사진 버튼은 stopPropagation()으로 분리했습니다.

5. 덤으로 잡은 버그

createdEventToTimeline(/q에서 방금 만든 기록을 새로고침 없이 목록에 바로 꽂는 함수)이 createdAt·updatedAt·createdBy·updatedBy를 전부 누락시키고 있었습니다 — 방금 만든 기록을 바로 열면 감사 줄이 통째로 안 뜨는 별개의 버그였습니다.

검증

build · lint · test(270개) 통과.

마이그레이션은 격리된 임시 Postgres 컨테이너에 적용해 검증했습니다 — 이 작업 기기의 로컬 dev DB는 저장소의 마이그레이션 이력과 어긋나 있어(다른 세션의 잔여물로 보임) 건드리지 않았습니다. 임시 컨테이너에서 생성→수정→편집자 계정 삭제 시 SetNull 확인까지 실제 SQL로 왕복 확인 후 폐기했습니다.

첨부 그리드·이력 행 클릭 분리는 브라우저 정적 하네스로 실측했습니다 — 사진 클릭이 라이트박스로, 행 클릭이 상세로, 서로 안 섞이는 것까지 확인했습니다.

🤖 Generated with Claude Code

"{이름} 작성" 줄이 v0.6.0에서 한 번도 뜬 적이 없었다. eventAuditParts가
draft.createdBy?.name을 읽는데 EventDetailDraft는 그 필드를 createdByName
(평평한 문자열)으로 갖고 있다 — 존재하지 않는 프로퍼티를 읽어 항상
undefined였다. "수정" 줄만 뜨고 "작성" 줄은 안 뜬다는 사용자 리포트가
정확히 이 버그였다.

- eventAuditParts를 draft의 실제 모양(createdByName/updatedByName)에
  맞춰 고쳤다
- "수정한 사람" 이름을 최종 수정 줄에 추가. Event.updatedById(신규 컬럼 +
  마이그레이션) — PATCH할 때마다 세션 사용자로 갱신되고, 생성 직후엔
  작성자와 같다. 편집자가 작성자와 다를 때만 이름을 넣는다 —
  "보람 작성 · 별이 · 9월 3일 10:02 수정"
- 첨부 사진 상세 그리드가 이상하게 벌어져 보이던 버그. .attachment-thumb이
  두 군데서 정의돼 있었다 — 하나는 일반 썸네일용(56px), 하나는 아무
  컴포넌트도 쓰지 않는 죽은 코드(garage AttachmentList 컨벤션을 그대로
  옮겨왔지만 실제로 안 쓰임, 84px 고정 flex box). 후자가 파일 뒤쪽에
  있어 캐스케이드에서 이겨, 반응형 썸네일이 84px로 찌그러졌다. 리네임
  대신 죽은 블록 78줄을 통째로 삭제했다
- 이력 목록 첨부 미리보기를 다중 표시 + 클릭 분리로 개편. 기존엔 사진
  1장 + "+N"이었고 그 영역을 눌러도 행 전체와 똑같이 상세만 열렸다.
  이제 최대 4장을 보여주고, 사진을 누르면 바로 라이트박스가 뜨고 행의
  나머지를 누르면 상세가 열린다. <button> 안에 <button>은 유효하지
  않아 행 wrapper를 role="button" <div>로 바꿨다
- createdEventToTimeline(/q 방금 생성한 기록을 목록에 바로 꽂는 함수)이
  createdAt·updatedAt·createdBy·updatedBy를 전부 누락시키고 있었다 —
  방금 만든 기록을 새로고침 없이 바로 열면 감사 줄이 통째로 안 뜨는
  별개의 버그. 함께 고쳤다

마이그레이션은 격리된 임시 Postgres 컨테이너에 적용해 검증했다 — 이
기기의 로컬 dev DB는 저장소의 마이그레이션 이력과 어긋나 있어 건드리지
않았다. 생성→수정→편집자 계정 삭제(SetNull 확인)까지 실제 SQL로
왕복 확인 후 폐기.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@eigger
eigger merged commit d8df005 into master Sep 3, 2026
6 checks passed
@eigger
eigger deleted the feat/event-editor-audit-and-attachment-fixes branch September 3, 2026 14:41
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.

1 participant