임시 단일 HTML 콘솔을 걷어내고 5페이지 관리자 앱으로 교체(협의: 모니터링+필수 액션, negodata 계열 경량 스택 — Vite+React+TS+Tailwind +recharts+react-query+react-router). - 대시보드: /ops 5초 폴링 스탯 타일 8종 + 임계 배너(서버 AlertConfig 기본값 미러) + 세션 내 누적 큐 추이. - 작업 큐: 상태 탭·상품 검색·페이지네이션·상세 패널(결과/원가/오류), DEAD 재큐 버튼. - 상품·가격: 가격 추이 3선 + 몰별 최저가 바 + 검증 링크 + 수동 재검색. 시리즈 색 엔터티 고정 — 네이버 #008a43 은 쿠팡 적색과의 적록색약 분리(ΔE 14.5)·3:1 대비를 검증해 톤다운한 값. - 크롤 상태: 종료사유 도넛(의미 기반 상태색)·세션당 요청 수 분포 +차단 시작 기준선(예산 튜닝 뷰)·차단 추이/이력·세션 테이블. - 비용: 시간별 원가 스택(AI vs 프록시)·건당 평균·평균 소요(축이 달라 별도 차트 — 이중축 금지). - 설정: API 주소·guard 키(localStorage → X-API-Key 자동 첨부). 서버 설정 변경 UI 없음(toml 단일 소스 원칙). - dev 는 vite 프록시(:9600)로 CORS 불필요. 5페이지 실렌더 스크린샷 검증. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
20 lines
681 B
TypeScript
20 lines
681 B
TypeScript
import react from "@vitejs/plugin-react";
|
|
import tailwindcss from "@tailwindcss/vite";
|
|
import { defineConfig } from "vite";
|
|
|
|
// dev 서버는 /v1·/healthz·/readyz 를 LPS API(:9600)로 프록시한다 — CORS 설정 불필요.
|
|
// 다른 API 호스트를 보려면 VITE_LPS_URL 로 대상 변경(또는 앱 내 설정에서 base URL 지정).
|
|
const target = process.env.VITE_LPS_URL || "http://localhost:9600";
|
|
|
|
export default defineConfig({
|
|
plugins: [react(), tailwindcss()],
|
|
server: {
|
|
port: 5174,
|
|
proxy: {
|
|
"/v1": { target, changeOrigin: true },
|
|
"/healthz": { target, changeOrigin: true },
|
|
"/readyz": { target, changeOrigin: true },
|
|
},
|
|
},
|
|
});
|