From e6005b4f94527616930a0bb9101cb401b5e3ea9f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=AF=BC=ED=97=8C?= Date: Tue, 14 Jul 2026 11:44:59 +0900 Subject: [PATCH] =?UTF-8?q?feat(lps-admin):=20=ED=85=8C=EC=8A=A4=ED=8A=B8?= =?UTF-8?q?=20=EA=B2=80=EC=83=89=EC=9D=84=20=EC=95=B0=EB=B2=84=EB=A1=9C=20?= =?UTF-8?q?=EA=B5=AC=EB=B6=84=20=E2=80=94=20'=EC=8B=A4=EC=A0=9C=20?= =?UTF-8?q?=EB=B9=84=EC=9A=A9=20=EB=93=9C=EB=8A=94=20=EC=95=A1=EC=85=98'?= =?UTF-8?q?=20=EC=8B=A0=ED=98=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 테스트 검색은 다른 페이지(읽기전용 모니터링)와 달리 실제 크롤·프록시 비용이 발생하는 실행 액션이라 시각적으로 구분(협의). - 네비 '테스트 검색': 앰버 점 마커 + 앰버 텍스트/활성색, 위에 구분선으로 모니터링 페이지들과 분리(설정과 함께 실행/유틸 그룹). - 테스트 페이지 '검색 실행' 버튼: primary(indigo) → warn-700(#a36a00). 흰 텍스트 대비 4.55:1 로 AA 통과(실측). 상태색은 장식이 아니라 '비용 주의' 의미로만 사용(디자인 규칙 준수). - whitespace-nowrap 로 라벨 줄바꿈 방지. 모바일 hscroll 0 유지. Co-Authored-By: Claude Fable 5 --- lps-admin/src/components/Layout.tsx | 17 ++++++++++++----- lps-admin/src/pages/TestSearch.tsx | 3 ++- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/lps-admin/src/components/Layout.tsx b/lps-admin/src/components/Layout.tsx index 97cf906..83b13b2 100644 --- a/lps-admin/src/components/Layout.tsx +++ b/lps-admin/src/components/Layout.tsx @@ -4,13 +4,15 @@ import { useQuery } from "@tanstack/react-query"; import { NavLink, Outlet } from "react-router"; import { healthz } from "../api/client"; +// action: 실제 비용이 드는 실행 페이지(모니터링과 성격이 다름) — 앰버(warn) 마커로 구분. +// group: 이 항목 앞에 구분선(모니터링 ↔ 실행/설정 경계). const MENU = [ { to: "/", label: "대시보드", end: true }, { to: "/jobs", label: "작업 큐" }, { to: "/products", label: "상품·가격" }, { to: "/crawl", label: "크롤 상태" }, { to: "/costs", label: "비용" }, - { to: "/test", label: "테스트 검색" }, + { to: "/test", label: "테스트 검색", action: true, group: true }, { to: "/settings", label: "설정" }, ]; @@ -35,18 +37,23 @@ export default function Layout() {