Playwright 제거 → DuckDuckGo HTML 검색 전환 + UI 미세 조정

- 테이블링/캐치테이블 검색: Google+Playwright → DuckDuckGo HTML 파싱 (브라우저 불필요)
- 검색 딜레이 5~15초 → 2~5초로 단축
- 프론트엔드: 정보 텍스트 계층 개선 (폰트 크기/색상 조정)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
joungmin
2026-03-12 19:28:49 +09:00
parent 75e0066dbe
commit 4b1f7c13b7
4 changed files with 165 additions and 207 deletions

View File

@@ -315,16 +315,16 @@ function MapContent({ restaurants, selected, onSelectRestaurant, flyTo, activeCh
</p>
)}
{infoTarget.cuisine_type && (
<p className="text-sm text-gray-600">{infoTarget.cuisine_type}</p>
<p className="text-xs text-gray-500">{infoTarget.cuisine_type}</p>
)}
{infoTarget.address && (
<p className="text-xs text-gray-500 mt-1">{infoTarget.address}</p>
<p className="text-[11px] text-gray-400 mt-1">{infoTarget.address}</p>
)}
{infoTarget.price_range && (
<p className="text-xs text-gray-500">{infoTarget.price_range}</p>
<p className="text-[11px] text-gray-400">{infoTarget.price_range}</p>
)}
{infoTarget.phone && (
<p className="text-xs text-gray-500">{infoTarget.phone}</p>
<p className="text-[11px] text-gray-400">{infoTarget.phone}</p>
)}
<button
onClick={() => onSelectRestaurant?.(infoTarget)}

View File

@@ -52,7 +52,7 @@ export default function RestaurantDetail({
<div className="p-4 space-y-4">
<div className="flex justify-between items-start">
<div className="flex items-center gap-2">
<h2 className="text-lg font-bold dark:text-gray-100">{restaurant.name}</h2>
<h2 className="text-xl font-bold dark:text-gray-100">{restaurant.name}</h2>
{getToken() && (
<button
onClick={handleToggleFavorite}
@@ -95,30 +95,30 @@ export default function RestaurantDetail({
</div>
)}
<div className="space-y-1 text-sm dark:text-gray-300">
<div className="space-y-1 text-xs text-gray-500 dark:text-gray-400">
{restaurant.cuisine_type && (
<p>
<span className="text-gray-500 dark:text-gray-400">:</span> {restaurant.cuisine_type}
<span className="text-gray-400 dark:text-gray-500"></span> <span className="text-gray-600 dark:text-gray-300">{restaurant.cuisine_type}</span>
</p>
)}
{restaurant.address && (
<p>
<span className="text-gray-500 dark:text-gray-400">:</span> {restaurant.address}
<span className="text-gray-400 dark:text-gray-500"></span> <span className="text-gray-600 dark:text-gray-300">{restaurant.address}</span>
</p>
)}
{restaurant.region && (
<p>
<span className="text-gray-500 dark:text-gray-400">:</span> {restaurant.region}
<span className="text-gray-400 dark:text-gray-500"></span> <span className="text-gray-600 dark:text-gray-300">{restaurant.region}</span>
</p>
)}
{restaurant.price_range && (
<p>
<span className="text-gray-500 dark:text-gray-400">:</span> {restaurant.price_range}
<span className="text-gray-400 dark:text-gray-500"></span> <span className="text-gray-600 dark:text-gray-300">{restaurant.price_range}</span>
</p>
)}
{restaurant.phone && (
<p>
<span className="text-gray-500 dark:text-gray-400">:</span>{" "}
<span className="text-gray-400 dark:text-gray-500"></span>{" "}
<a href={`tel:${restaurant.phone}`} className="text-brand-600 dark:text-brand-400 hover:underline">
{restaurant.phone}
</a>

View File

@@ -45,7 +45,7 @@ export default function RestaurantList({
}`}
>
<div className="flex items-start justify-between gap-2">
<h4 className="font-semibold text-sm text-gray-900 dark:text-gray-100">
<h4 className="font-bold text-[15px] text-gray-900 dark:text-gray-100">
<Icon name={getCuisineIcon(r.cuisine_type)} size={16} className="mr-0.5 text-brand-600" />
{r.name}
</h4>
@@ -64,7 +64,7 @@ export default function RestaurantList({
)}
</div>
{r.region && (
<p className="mt-1 text-xs text-gray-500 dark:text-gray-500 truncate">{r.region}</p>
<p className="mt-1 text-[11px] text-gray-400 dark:text-gray-500 truncate">{r.region}</p>
)}
{r.foods_mentioned && r.foods_mentioned.length > 0 && (
<div className="flex flex-wrap gap-1 mt-1.5">