feat: Flyway 형상 뷰어 UI 개선 및 새로고침 버튼 추가#261
Conversation
- STATUS_META: MERGE_PENDING→'dev 반영', DB_APPLIED→'prod 반영'
- 순서역전 행: 좌측 컬러 세로선(컬럼=빨강, 테이블=주황) + 인라인 배지
('⚠ 컬럼 역전' / '🔀 순서 역전')
- 상단 배너 severity 표기: TABLE→'테이블', COLUMN→'컬럼'으로 한글화
- SQL 패널: 선택 마이그레이션이 순서역전 대상이면 경고 블록 표시
(공유 테이블/컬럼명 하이라이트, 강약 구분 색상)
서버 캐시 TTL(1시간)에 맞춰 클라이언트 staleTime도 1시간으로 조정하고, 즉시 갱신이 필요한 경우를 위한 새로고침 버튼을 헤더에 추가. 버튼 클릭 시 DELETE /flyway/cache 호출 후 overview 쿼리를 무효화해 재조회.
jaeyoung-kwon
left a comment
There was a problem hiding this comment.
🤖 PR Review
Flyway 형상 뷰어 UI 개선 PR. leapfrog severity 계층(COLUMN > TABLE) 집계 로직이 정확하고, 새로고침 버튼의 query invalidation 패턴(queryClient.invalidateQueries)도 올바르게 연결되어 있습니다. staleTime 30s → 1h 변경은 서버 캐시 TTL 동기화 목적으로 설계 의도가 명확합니다. WipRegisterForm의 !!data 중복 제출 방지도 적절합니다.
🚨 0 Critical ·
참고
- admin/src/pages/flyway/FlywayViewer.tsx:55-60 — 캐시 새로고침 실패 시 사용자 피드백 없음
useMutation에onError핸들러가 없어DELETE /flyway/cache요청이 실패해도 버튼이 조용히 원래 상태로 돌아갑니다. 사용자는 새로고침이 실패했는지 알 수 없어 오래된 데이터를 계속 보게 될 수 있습니다.onError콜백에서 토스트 메시지나 에러 상태 표시를 추가하면 UX가 개선됩니다.
📋 검증 과정
- Claude structured review 결과 중 확신도가 있는 항목만 정리했습니다.
- Critical/Major는 inline comment로 게시하고, Minor는 참고 항목으로 summary에 포함합니다.
- 자동 생성된 OpenAPI 타입 선언 파일과 lock 파일은 리뷰 대상에서 제외합니다.
🤖 Claude PR Review
Generated by Claude Code
|
📝 린트 오류 (prettier)
// 현재 (lint 오류)
<Button
type="button"
onClick={() => refresh()}
disabled={isRefreshing}
>
// 수정 필요
<Button type="button" onClick={() => refresh()} disabled={isRefreshing}>
Generated by Claude Code |
|
아래 내용 Husky 도입하면 간단하게 해결 되지 않나요? FlywayViewer.tsx 128번 줄 새로고침 버튼에 prettier 포맷 오류가 있어 CI가 실패합니다. // 현재 (lint 오류) // 수정 필요 |
이거 상추가 작업하기로 해서, 일단은 린트에러만 수정하고 바로 머지해도 될 것 같아요~! |
What
MERGE_PENDING→ "dev 반영" 🔵,DB_APPLIED→ "prod 반영" 🟢⚠ 컬럼 역전(빨간 테두리) /🔀 순서 역전(주황 테두리)staleTime30초 → 1시간으로 조정 (서버 캐시 TTL과 동기화)disabled={!canSubmit || isPending || !!data})540px→calc(100vh - 400px); min-height: 400pxWhy
How
STATUS_META: 라벨 및 색상 업데이트leapfrogSeverityMap: 버전별 최악 severity 집계 (COLUMN > TABLE)RowButton:$leapfrogSeverityprop으로 테두리 색상 분기LeapfrogBadge: severity별 배지 렌더링DetailContent:leapfrogsprop으로 SQL 패널 경고 블록 표시flywayQueries.mutation.refreshCache()+DELETE /flyway/cache연동