feat(app): finalize ad gated flows and weather

- add AppLogger and replace scattered print logging\n- implement ad-gated recommendation flow with reminder handling and calendar link\n- complete Bluetooth share pipeline with ad gate and merge\n- integrate KMA weather API with caching and dart-define decoding\n- add NaverUrlProcessor refactor and restore restaurant repository tests
This commit is contained in:
JiWoong Sul
2025-11-22 00:10:51 +09:00
parent 947fe59486
commit 2a01fa50c6
43 changed files with 1777 additions and 571 deletions

View File

@@ -1,5 +1,5 @@
import 'package:html/dom.dart';
import 'package:flutter/foundation.dart';
import 'package:lunchpick/core/utils/app_logger.dart';
/// 네이버 지도 HTML 파서
///
@@ -77,8 +77,12 @@ class NaverHtmlParser {
}
}
return null;
} catch (e) {
debugPrint('NaverHtmlParser: 이름 추출 실패 - $e');
} catch (e, stackTrace) {
AppLogger.error(
'NaverHtmlParser: 이름 추출 실패 - $e',
error: e,
stackTrace: stackTrace,
);
return null;
}
}
@@ -97,8 +101,12 @@ class NaverHtmlParser {
}
}
return null;
} catch (e) {
debugPrint('NaverHtmlParser: 카테고리 추출 실패 - $e');
} catch (e, stackTrace) {
AppLogger.error(
'NaverHtmlParser: 카테고리 추출 실패 - $e',
error: e,
stackTrace: stackTrace,
);
return null;
}
}
@@ -115,8 +123,12 @@ class NaverHtmlParser {
}
}
return null;
} catch (e) {
debugPrint('NaverHtmlParser: 서브 카테고리 추출 실패 - $e');
} catch (e, stackTrace) {
AppLogger.error(
'NaverHtmlParser: 서브 카테고리 추출 실패 - $e',
error: e,
stackTrace: stackTrace,
);
return null;
}
}
@@ -137,8 +149,12 @@ class NaverHtmlParser {
}
}
return null;
} catch (e) {
debugPrint('NaverHtmlParser: 설명 추출 실패 - $e');
} catch (e, stackTrace) {
AppLogger.error(
'NaverHtmlParser: 설명 추출 실패 - $e',
error: e,
stackTrace: stackTrace,
);
return null;
}
}
@@ -159,8 +175,12 @@ class NaverHtmlParser {
}
}
return null;
} catch (e) {
debugPrint('NaverHtmlParser: 전화번호 추출 실패 - $e');
} catch (e, stackTrace) {
AppLogger.error(
'NaverHtmlParser: 전화번호 추출 실패 - $e',
error: e,
stackTrace: stackTrace,
);
return null;
}
}
@@ -179,8 +199,12 @@ class NaverHtmlParser {
}
}
return null;
} catch (e) {
debugPrint('NaverHtmlParser: 도로명 주소 추출 실패 - $e');
} catch (e, stackTrace) {
AppLogger.error(
'NaverHtmlParser: 도로명 주소 추출 실패 - $e',
error: e,
stackTrace: stackTrace,
);
return null;
}
}
@@ -201,8 +225,12 @@ class NaverHtmlParser {
}
}
return null;
} catch (e) {
debugPrint('NaverHtmlParser: 지번 주소 추출 실패 - $e');
} catch (e, stackTrace) {
AppLogger.error(
'NaverHtmlParser: 지번 주소 추출 실패 - $e',
error: e,
stackTrace: stackTrace,
);
return null;
}
}
@@ -238,8 +266,12 @@ class NaverHtmlParser {
}
return null;
} catch (e) {
debugPrint('NaverHtmlParser: 위도 추출 실패 - $e');
} catch (e, stackTrace) {
AppLogger.error(
'NaverHtmlParser: 위도 추출 실패 - $e',
error: e,
stackTrace: stackTrace,
);
return null;
}
}
@@ -275,8 +307,12 @@ class NaverHtmlParser {
}
return null;
} catch (e) {
debugPrint('NaverHtmlParser: 경도 추출 실패 - $e');
} catch (e, stackTrace) {
AppLogger.error(
'NaverHtmlParser: 경도 추출 실패 - $e',
error: e,
stackTrace: stackTrace,
);
return null;
}
}
@@ -297,8 +333,12 @@ class NaverHtmlParser {
}
}
return null;
} catch (e) {
debugPrint('NaverHtmlParser: 영업시간 추출 실패 - $e');
} catch (e, stackTrace) {
AppLogger.error(
'NaverHtmlParser: 영업시간 추출 실패 - $e',
error: e,
stackTrace: stackTrace,
);
return null;
}
}