Phase 0: React environment setup + project initialization

구현 사항:
1. React + TypeScript 마이그레이션 시작
   - package.json: React, Redux Toolkit, TanStack Query, shadcn/ui dependencies 추가
   - vite.config.js: React 플러그인 + Phase 5/7 API 프록시 추가
   - tsconfig.json, tsconfig.node.json 추가

2. Redux 스토어 설정
   - stores/ontologySlice.ts: 온톨로지 상태 관리
   - stores/crawlSlice.ts: 크롤링 진행 상태
   - stores/uiSlice.ts: UI 상태

3. 리액트 진입점 및 기본 컴포넌트
   - src/main.tsx: React 앱 초기화
   - src/App.tsx: 라우팅 설정 (대시보드, 온보딩, 소스, 크롤, 검증)
   - 5개 페이지 컴포넌트 (placeholder)

4. 스타일 및 설정
   - tailwind.config.js: Tailwind 설정
   - src/styles/globals.css: 글로벌 스타일
   - postcss.config.js: PostCSS 설정
   - src/i18n.ts: i18next 다국어 설정
   - src/lib/queryClient.ts: React Query 설정

5. TypeScript 타입 정의
   - src/stores/slices: 각 Redux slice의 TypeScript 타입

프로젝트 구조:
crawler_platform/app/web/frontend/
├── src/
│   ├── main.tsx (React 진입점)
│   ├── App.tsx (라우팅)
│   ├── pages/ (4개 페이지 컴포넌트)
│   ├── stores/ (Redux 스토어 + slices)
│   ├── lib/ (유틸리티)
│   ├── styles/ (CSS)
│   └── i18n.ts (다국어 설정)
├── index.html (업데이트: React root)
├── package.json (의존성 추가)
├── vite.config.js (React 플러그인)
├── tsconfig.json (TypeScript 설정)
├── tailwind.config.js (Tailwind 설정)
└── postcss.config.js (PostCSS 설정)

다음 단계:
- npm install로 의존성 설치
- Phase 1: 온톨로지 업로더 구현
- Phase 1: 참고 사이트 매니저 구현

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
This commit is contained in:
lasta
2026-05-14 13:52:45 +09:00
parent a71da5b3c2
commit 1be2c7d3a3
22 changed files with 817 additions and 7 deletions

View File

@@ -0,0 +1,40 @@
import { useNavigate, useParams } from "react-router-dom";
import { useTranslation } from "react-i18next";
export default function CrawlPage() {
const navigate = useNavigate();
const { projectId } = useParams();
const { t } = useTranslation();
return (
<div className="min-h-screen bg-gray-50 p-4">
<div className="max-w-4xl mx-auto">
<h1 className="text-3xl font-bold text-gray-900 mb-2">
{t("Build Ontology")}
</h1>
<p className="text-gray-600 mb-6">
{t("Step 3 of 4: Auto-crawl and build ontology with Phase 5 + 7")}
</p>
<div className="bg-white rounded-lg shadow p-6">
<p className="text-gray-500">{t("Crawl pipeline will appear here")}</p>
</div>
<div className="flex gap-4 mt-6">
<button
onClick={() => navigate(`/sources/${projectId}`)}
className="flex-1 px-4 py-2 border border-gray-300 rounded-lg text-gray-700 hover:bg-gray-50 transition"
>
{t("Back")}
</button>
<button
onClick={() => navigate(`/review/${projectId}`)}
className="flex-1 px-4 py-2 bg-blue-600 text-white rounded-lg hover:bg-blue-700 transition"
>
{t("Review Results")}
</button>
</div>
</div>
</div>
);
}