import 'dart:convert'; import 'package:flutter_test/flutter_test.dart'; import 'package:lunchpick/data/api/naver_api_client.dart'; import 'package:lunchpick/data/datasources/remote/naver_map_parser.dart'; void main() { test('Debug: 네이버 검색 API 전체 응답 확인', () async { final parser = NaverMapParser(); final apiClient = NaverApiClient(); try { print('\n========== 네이버 검색 API 디버깅 시작 ==========\n'); // 테스트 URL const testUrl = 'https://pcmap.place.naver.com/restaurant/1638379069/home'; const placeId = '1638379069'; // 1. 한글 텍스트 추출 print('1. 한글 텍스트 추출 중...'); final koreanData = await apiClient.fetchKoreanTextsFromPcmap(placeId); print('\n추출된 한글 텍스트:'); if (koreanData['koreanTexts'] != null) { final texts = koreanData['koreanTexts'] as List; for (var i = 0; i < texts.length && i < 10; i++) { print(' [$i] ${texts[i]}'); } } print('\nJSON-LD 상호명: ${koreanData['jsonLdName']}'); print('Apollo State 상호명: ${koreanData['apolloStateName']}'); // 2. 검색할 키워드 결정 String searchQuery = ''; if (koreanData['jsonLdName'] != null) { searchQuery = koreanData['jsonLdName'] as String; } else if (koreanData['apolloStateName'] != null) { searchQuery = koreanData['apolloStateName'] as String; } else if (koreanData['koreanTexts'] != null && (koreanData['koreanTexts'] as List).isNotEmpty) { searchQuery = (koreanData['koreanTexts'] as List).first as String; } print('\n2. 검색 키워드: "$searchQuery"'); // 3. 네이버 로컬 검색 API 호출 print('\n3. 네이버 검색 API 호출 중...'); final searchResults = await apiClient.searchLocal( query: searchQuery, display: 10, ); print('\n========== 검색 API 전체 응답 (JSON) =========='); // 각 검색 결과를 자세히 출력 for (var i = 0; i < searchResults.length; i++) { final result = searchResults[i]; print('\n--- 검색 결과 #$i ---'); print('상호명: ${result.title}'); print('카테고리: ${result.category}'); print('설명: ${result.description}'); print('전화번호: ${result.telephone}'); print('도로명주소: ${result.roadAddress}'); print('지번주소: ${result.address}'); print('링크: ${result.link}'); print('좌표 X (경도): ${result.mapx}'); print('좌표 Y (위도): ${result.mapy}'); // Place ID 추출 final extractedPlaceId = result.extractPlaceId(); print('추출된 Place ID: $extractedPlaceId'); print('타겟 Place ID와 일치?: ${extractedPlaceId == placeId}'); // 좌표 변환 if (result.mapx != null && result.mapy != null) { final lat = result.mapy! / 10000000.0; final lng = result.mapx! / 10000000.0; print('변환된 좌표: $lat, $lng'); } } print('\n========== 분석 결과 =========='); print('총 검색 결과 수: ${searchResults.length}'); // Place ID가 일치하는 결과 찾기 var matchingResults = []; for (var i = 0; i < searchResults.length; i++) { final extractedId = searchResults[i].extractPlaceId(); if (extractedId == placeId) { matchingResults.add(i); } } if (matchingResults.isNotEmpty) { print('✅ Place ID가 일치하는 결과: ${matchingResults.join(', ')}번째'); } else { print('❌ Place ID가 일치하는 결과를 찾을 수 없음'); } print('\n========== 테스트 완료 ==========\n'); } catch (e, stackTrace) { print('\n❌ 오류 발생: $e'); print('\n스택 트레이스:'); print(stackTrace); } finally { parser.dispose(); apiClient.dispose(); } }); }