📝 기능 설명
링크 검사 중 화면에서 현재 사용 중인 3초 mock 타이머 흐름을 실제 백엔드 분석 API 연동 흐름으로 교체하고, 분석 완료 결과를 결과 화면까지 전달할 수 있는 구조를 구현합니다.
현재 app/(tabs)/(home)/scanning.tsx는 검사 대상 URL을 받은 뒤 일정 시간이 지나면 mock 결과 화면으로 이동합니다.
이번 작업에서는 백엔드의 분석 요청 API인 POST /api/v1/analyses를 호출하고, 응답으로 받은 analysisId를 기준으로 GET /api/v1/analyses/{analysisId}를 polling하여 실제 분석 상태를 확인합니다.
분석 상태가 succeeded가 되면 응답의 verdict 값에 따라 안전, 주의, 위험 결과 화면으로 이동합니다.
이때 결과 화면에서 실제 분석 결과를 활용할 수 있도록 url, analysisId, AnalysisResponse 전달/수신 구조까지 함께 구현합니다.
분석 API는 Clerk 인증 토큰이 필요한 보호 API이므로, issue #41에서 정리한 공통 API 클라이언트 구조를 사용합니다.
📋 구현할 Task
📎 추가 내용
-
관련 화면
app/(tabs)/(home)/scanning.tsx
app/(tabs)/(home)/scan-result.tsx
app/(tabs)/(home)/scan-result-caution.tsx
app/(tabs)/(home)/scan-result-block.tsx
-
관련 API
POST /api/v1/analyses
GET /api/v1/analyses/{analysisId}
-
요청 예시
{
"url": "https://example.com"
}
📝 기능 설명
링크 검사 중 화면에서 현재 사용 중인 3초 mock 타이머 흐름을 실제 백엔드 분석 API 연동 흐름으로 교체하고, 분석 완료 결과를 결과 화면까지 전달할 수 있는 구조를 구현합니다.
현재
app/(tabs)/(home)/scanning.tsx는 검사 대상 URL을 받은 뒤 일정 시간이 지나면 mock 결과 화면으로 이동합니다.이번 작업에서는 백엔드의 분석 요청 API인
POST /api/v1/analyses를 호출하고, 응답으로 받은analysisId를 기준으로GET /api/v1/analyses/{analysisId}를 polling하여 실제 분석 상태를 확인합니다.분석 상태가
succeeded가 되면 응답의verdict값에 따라 안전, 주의, 위험 결과 화면으로 이동합니다.이때 결과 화면에서 실제 분석 결과를 활용할 수 있도록
url,analysisId,AnalysisResponse전달/수신 구조까지 함께 구현합니다.분석 API는 Clerk 인증 토큰이 필요한 보호 API이므로, issue #41에서 정리한 공통 API 클라이언트 구조를 사용합니다.
📋 구현할 Task
app/(tabs)/(home)/scanning.tsx의 mock 타이머 기반 이동 흐름을 확인했는가?POST /api/v1/analyses요청 시 ClerkgetToken()기반 인증 헤더가 포함되는가?analysisId와 초기status를 정상적으로 파싱하는가?GET /api/v1/analyses/{analysisId}polling 호출을 구현했는가?queued상태에서는 polling을 계속 유지하는가?succeeded상태에서는verdict값에 따라 결과 화면으로 이동하는가?safe결과는scan-result화면으로 이동하는가?caution결과는scan-result-caution화면으로 이동하는가?danger결과는scan-result-block화면으로 이동하는가?failed상태 또는 API 에러 발생 시 사용자에게 적절한 안내를 제공하는가?url,analysisId,AnalysisResponse를 전달하는 구조를 구현했는가?analysisId를 route params 등으로 수신할 수 있는가?AnalysisResponse를 사용할 수 있는 구조인가?📎 추가 내용
관련 화면
app/(tabs)/(home)/scanning.tsxapp/(tabs)/(home)/scan-result.tsxapp/(tabs)/(home)/scan-result-caution.tsxapp/(tabs)/(home)/scan-result-block.tsx관련 API
POST /api/v1/analysesGET /api/v1/analyses/{analysisId}요청 예시
{ "url": "https://example.com" }