2026-07-28 Ruga 작업일지입니다. 오늘은 6건의 작업을 진행했습니다.
admin 공지사항
현상/기능
- 구분을 공지, 안내, 휴진, 소식, 진료로 변경
현상/기능
- 만료일 없이도 등록 · 기본 오늘+1달 · 「만료일 없음」 체크 시 날짜 제거
작업
- 소스
- NOTICE/GUIDE/CLOSED/NEWS/CLINIC
- admin 구분 select 자동 반영
- `lib/` · site/mock 상세 카테고리 동기화
- `alter_hospital_notices_notice_type_values.sql` + apply 스크립트
- 소스: — `noExpires` 체크 시 날짜 비움·disabled, 해제 시 오늘+1개월 복원
web 정적 이미지
탈모클리닉 이미지 서버 404
- 증상: careGuide hair `hair-diagnosis.png` 서버 미표시
- 원인: 운영 `http://…:3100/images/hair-diagnosis.png` 404 — `deploy/out/web/public/images`에 PNG 미포함(이전 패키지)
- 조치: 로컬 `public/images` PNG 23개를 `deploy/out/web/public/images`에 복사. 서버에 `deploy/out` 재동기화 필요
web 공지사항
현상/기능
- `/notice` 목업 데이터 삭제
현상/기능
- 상단고정 처리된 내용 색상 달리 표시
현상/기능
- 내용 상하·행간 공간 약 30% 축소, 한 페이지 10개
현상/기능
- admin 등록 공지를 `/notice`에 표시, 목업 유지, 초과 시 페이징
작업
- 소스: `lib/` — fillWithMock·site 폴백 제거(admin만), `notice/` 호출 정리
- 소스: `NoticeItem.isPinned`, `lib/notices` 매핑, `/notice`·홈 Notice — amber 배경·배지
- 소스: `NOTICE_PAGE_SIZE=10`, `notice/` — `py-11 md:py-16`, 행 `py-3.5`
- 소스
- `lib/` — `{ items, pagination }` · `fillWithMock` · `NOTICE_PAGE_SIZE`
- 신규
- `notice/` — `?page=` · force-dynamic · fillWithMock
- `app/` — 반환형 변경 대응
- 상세 `/notice/[id]`: 목업 상세 유지. admin id 상세는 추후 API 연동
admin 비포&애프터
현상/기능
- DataTable에 홈페이지 미노출 상태도 표시
작업
- 소스: — 컬럼 `홈노출`(노출/미노출, `isHidden`)
web 비포&애프터
비포&애프터 페이징 UI 미표시 수정
- 증상: 등록 5건인데 `/obesity/beforeafter`에 페이징 UI 없음
- 원인: `revalidate: 300` ISR 캐시가 예전 4건 응답을 유지 → totalPages=1
- 수정: `getBeforeAfterCasescache: 'no-store'`, 게시판 `force-dynamic`, 페이징 표시를 `totalCount > limit` 기준으로 보강
현상/기능
- 4개 이상이면 페이징 처리
현상/기능
- `/obesity/beforeafter`에서 admin 미등록 목업 삭제
현상/기능
- 팝업에서 이미지 영역 클릭 시 이미지만 더 크게
현상/기능
- `/obesity/beforeafter`·`/hair/beforeafter` 항목 클릭 시 전체적으로 크게 보이게
현상/기능
- `admin/before-after` 하단 추가문구가 `/obesity/beforeafter`에 적용되지 않음
작업
- 소스
- `lib/` — `{ items, pagination }` 반환, `BEFORE_AFTER_PAGE_SIZE=4`
- 신규 — 이전/번호/다음
- pagination·basePath props
- `obesity|hair/beforeafter/` — `?page=` 서버 조회
- `app/` — 반환형 변경 대응
- `lib/` — `mergeWithMock` 제거, API 실데이터만 반환
- `data/` — `mockBeforeAfterCases` 삭제(타입·라벨만 유지)
- 영향: obesity/hair beforeafter, 홈 비포&애프터 프리뷰도 admin 데이터만 표시
- 소스: — 이미지 라이트박스(Escape/배경 클릭 시 상세로 복귀)
- 신규 — BEFORE/AFTER·설명·footerNote 확대 다이얼로그
- `subpage/` — 비만/탈모 공용, 카드 클릭 → 모달
- `obesity/beforeafter/`, `hair/beforeafter/` — summary 갱신
- `data/` — `BeforeAfterCase.footerNote` 추가
- `lib/` — API `footerNote` 매핑
- 카드 하단에 `footerNote` 표시(없으면 기본 고지)
admin 인증
현상/기능
- 로그인 session이 없거나 만료되면 로그인 페이지로 이동
작업
- 소스
- 미로그인 시 `/login?callbackUrl=` 명시 리다이렉트
- 클라이언트 `unauthenticated` → `/login` 가드 추가
- `refetchOnWindowFocus` + 5분 `refetchInterval`
- 로그인 성공 시 `callbackUrl` 복귀