Skip to content

fix(fe): 상태 목록 위젯 타임머신 미동작 수정 — http_status 스냅샷 합성 - #1

Open
xgeekover wants to merge 1 commit into
developfrom
fix/tm-status-list
Open

fix(fe): 상태 목록 위젯 타임머신 미동작 수정 — http_status 스냅샷 합성#1
xgeekover wants to merge 1 commit into
developfrom
fix/tm-status-list

Conversation

@xgeekover

Copy link
Copy Markdown
Owner

문제 (Track A)

타임머신(TM) 모드에서 상태 목록(status-list) 위젯만 항상 "이 시점에 데이터 없음" + dead 로 표시되던 버그.

  • 다른 모니터 위젯(server-resource / network)은 카드 레벨에서 각자 TM 스냅샷을 읽지만, status-list 는 TM 처리 코드가 전무했음.
  • status-list 는 여러 http_status 모니터 타깃을 하나의 목록으로 합성하므로 단일 snapshot key 로 풀 수 없어(snapshotKey.jsnull 반환) useWidgetApiDatatmResults 에서 스냅샷을 찾지 못함.
  • 백엔드에는 monitor:http_status 샘플이 실제로 존재하고 이를 그릴 StatusListDetail 까지 있으나 위젯 배선만 빠져 있었음.

변경

monigrid-fe/src/hooks/useWidgetApiData.js

  • buildStatusListTmData() 추가 — 각 targetId 의 monitor:http_status|<tid> 스냅샷을 모아 라이브 경로와 동일한 transformMonitorSnapshotToStatusList(){ items, okCount, failCount } 형태로 합성.
  • tmResults 에서 status-list 를 특수 분기(continue)해 기존 data_api/table/chart 경로는 그대로 유지 → 회귀 위험 없음.
  • TM 모드에서 카드의 "마지막 갱신 시각" 이 스냅샷 시점을 가리키도록 data.checkedAt 를 최신 스냅샷 ts 로 부여.

monigrid-fe/src/components/StatusListCard.jsx

  • 갱신 시각을 data.checkedAt 기준으로 표시(TM=스냅샷 시점, 라이브≈현재).

안전성

status-list 는 reportWidgetStatus 를 호출하지 않고 전역 알람은 BE /alerts/active 가 단독 소스이므로, 과거 시점 데이터로 라이브 알람이 오발화되지 않음.

검증

  • ✅ 전체 vite build 통과 (앱 통합)
  • ✅ 합성 로직 시뮬레이션 24/24 통과 (실제 소스 함수 + 실제 BE 스냅샷 형태, 4개 시나리오: 다수 OK/NG · 스냅샷 없음 · 전 타깃 장애 · 부분 존재)
  • ✅ esbuild 파싱
  • ⚠️ 라이브 브라우저 E2E 는 원격 MariaDB(LAN) 의존 + 실 수집기 기동 이슈로 미수행 — 리뷰어 육안 확인 권장 (TM 토글 → 최근 72h 시점 스크럽 → 위젯이 OK/NG 목록 표시)

🤖 Generated with Claude Code

https://claude.ai/code/session_01STHNiPFvtoxMbemirfk1aU

status-list 위젯은 다중 http_status 모니터 타깃을 하나의 목록으로 묶어
단일 snapshot key 로 풀 수 없어(snapshotKey.js 가 null 반환), TM 모드에서
항상 "이 시점에 데이터 없음" 으로 표시되던 버그.

- useWidgetApiData.tmResults 에서 status-list 를 특수 처리: 각 targetId 의
  monitor:http_status|<tid> 스냅샷을 모아 라이브 경로와 동일한
  transformMonitorSnapshotToStatusList 로 합성. (ServerResource/Network 카드가
  카드 레벨에서 하는 다중 타깃 조립을, status-list 는 라이브 데이터도 이 훅을
  타므로 훅 레벨에서 수행)
- status-list 는 reportWidgetStatus 를 호출하지 않고 전역 알람은 BE
  /alerts/active 가 단독 소스라, 과거 시점 데이터로 라이브 알람이 오발화되지
  않음.
- 카드의 "마지막 갱신 시각" 이 TM 모드에서 스냅샷 시점을 가리키도록
  data.checkedAt 를 최신 스냅샷 ts 로 부여 + StatusListCard 가 이를 사용.

검증: vite build 통과, 합성 로직 시뮬레이션 24/24 통과.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01STHNiPFvtoxMbemirfk1aU
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