[FEATURE] 보안 등급별 링크 현황 카드 API 연동#69
Conversation
There was a problem hiding this comment.
현재 올려주신 화면에서 기록 없음이 뜨는 경우 카드의 상태인 (ex 확인 필요, 접근 주의)등의 위치에 오는 것이 좋아보이지 않아 보입니다.
해당 위치는 카드 색상에 대한 정보를 주는 공간이기 때문에 차라리 0일때 0 그대로 보여주는 것이 -(dash) 보다 좋다고 생각이 됩니다.
또한 지금 코드 상에서
케이스 1 — safe, caution, danger 모두 0
getStatisticsViewStatus의 .every() 조건에 걸려 status = 'empty'
케이스 2 — 일부만 0 (예: safe=5, caution=0, danger=0)
.every() 조건에 안 걸려 status = 'ready'
다음 2가지 상황에서 화면에 기록 없음 혹은 확인 필요와 같은 카드에 대한 정보를 보여주는 것이 일관되지 않는 것으로 확인됩니다 이 부분도 체크 부탁드립니다
| return 'loading'; | ||
| } | ||
|
|
||
| if (errorMessage) { |
There was a problem hiding this comment.
statisticsErrorMessage가 boolean처럼 사용됨 문제
코드:
const [statisticsErrorMessage, setStatisticsErrorMessage] = useState('');
// ...
if (errorMessage) { return 'error'; } // 실제 문자열 내용은 안 씀
표시되는 에러 문구는 항상 STATISTICS_STATUS_LABELS['error']에서 옵니다.
statisticsErrorMessage의 실제 문자열 값은 전혀 사용되지 않습니다.
나중에 에러 코드별 다른 메시지를 추가하려 할 때 혼동을 줄 수 있는 코드입니다.
There was a problem hiding this comment.
맞습니다. 해당 상태는 실제 에러 메시지를 화면에 노출하는 용도가 아니라, 통계 조회 실패 여부를 판단하는 플래그로만 사용되고 있었습니다.
기존 statisticsErrorMessage는 문자열 상태였지만 실제 문자열 값은 사용하지 않고 truthy 여부만 확인하고 있었기 때문에, 역할이 더 명확하도록 hasStatisticsError boolean 상태로 변경했습니다.
에러 상태에서 화면에 표시되는 문구는 기존과 동일하게 STATISTICS_STATUS_LABELS.error를 통해 관리하도록 유지했습니다.
피드백 주신 부분 반영했습니다! 기존에는 safe/caution/danger가 모두 0일 때 해당 영역은 말씀해주신 것처럼 카드 색상 및 등급의 의미를 설명하는 자리라고 판단하여, 수정 후에는 통계 값이 모두 0인 경우에도 각 카드는 아래처럼 표시됩니다.
대신 또한 기존에는 아래 두 케이스에서 같은
이를 해결하기 위해
|
|
추가로 홈 화면 통계 카드가 최신 데이터를 더 잘 반영하도록 수정했습니다. 기존에는 그래서 통계 조회 로직을 |
Closes #60
개요
홈 화면의
보안 등급별 링크 현황placeholder 영역을 실제 통계 API 기반 카드 UI로 교체했습니다.백엔드
dev에 이미 머지된GET /api/v1/analyses/statisticsAPI 계약을 확인한 뒤, 프론트 공통 API 클라이언트 패턴에 맞춰publicApiRequest로 연동했습니다. 응답은{ safe, caution, danger }구조로 정리하고, 홈 화면 진입 시 등급별 통계를 조회해 안전/주의/위험 카드에 표시하도록 구성했습니다.카드 UI는 기존 디자인 토큰인
Colors.brand.verdict.*,Colors.brand.surface,Colors.brand.line,Typography.*를 사용해 구현했습니다. 화면 파일에는 별도 헥스/rgb 색상 하드코딩을 추가하지 않았고, 기존 홈 화면의 섹션 구조와SectionHeader를 재사용했습니다.로딩, API 에러, 데이터 없음 상태도 카드 레이아웃을 유지한 채 표시되도록 처리했습니다. 작은 휴대폰에서도 카드 UI가 깨지거나 부자연스럽지 않은 것을 확인했습니다.
주요 구현 내용
보안 등급별 링크 현황placeholder 제거safe,caution,danger등급별 현황 카드 UI 적용GET /api/v1/analyses/statistics통계 API 연동VerdictStatisticsResponse추가-, 보조 문구를집계 중으로 표시-, 보조 문구를확인 불가로 표시0, 보조 문구기록 없음표시파일별 역할
api/analyses.ts: verdict 통계 응답 타입 및fetchVerdictStatisticsAPI 함수 추가app/(tabs)/(home)/index.tsx: 홈 화면 보안 등급별 현황 카드 UI, API 조회, 로딩/에러/빈 상태 처리해결한 이슈 목록
보안 등급별 링크 현황placeholder 구조 확인safe,caution,danger로 정리체크 사항
API_ERD_WORKING_NOTES.md기준에 따라 프론트 레포 안에서만 코드 수정{ data: ... }unwrap을 직접 처리하지 않음npx tsc --noEmit통과npm run lint통과참고사항
GET /api/v1/analyses/statistics{ data: { safe, caution, danger } }형태이며, 프론트 공통 API 클라이언트가data를 unwrap합니다.SecurityConfig기준 인증 불필요 API입니다.Screenshots or Video