Phase 1.2: 참고 소스 관리 — 소스 CRUD + UI
백엔드 (crawler_platform/app/api/routes.py):
- POST /projects/{name}/sources: 프로젝트에 소스 추가/업데이트
- InlineSourceConfig 재사용, KnowledgeRepository.upsert_source 호출
- DELETE /projects/{name}/sources/{source_name}: 소스 삭제
- 404 처리 + 외래 키 정리
- GET /projects/{name} 응답에 base_url 필드 추가
프론트엔드 API 레이어 (src/lib/api/):
- sources.ts: sourcesApi.create/delete + Zod 스키마 (Source, deleteSourceResponseSchema)
TanStack Query 훅 (src/hooks/):
- useSources.ts: useCreateSource, useDeleteSource (mutation + 캐시 무효화)
- queryKeys에 sources.byProject 키 팩토리
ConfigureSourcesPage 완전 교체 (src/pages/):
- 2열 레이아웃: 등록된 소스 목록 + 소스 추가 폼
- react-hook-form + zod 검증 (name 정규식, type enum, trust 0~1, rate_limit 1~600)
- 소스 카드 표시: type 배지, 신뢰도, base_url 링크, 삭제 버튼
- 빈 상태/로딩 스켈레톤/에러+재시도 모두 처리
- "크롤 진행" 버튼은 소스 1개 이상일 때만 활성
- sonner 토스트 알림
i18n locale 키 sources.* 추가 (한/영)
다음 단계: Phase 1.3 — URL 시드 크롤 (CrawlPage 실제 구현)
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -35,6 +35,28 @@
|
||||
"created": "Project created: {{name}}",
|
||||
"createFailed": "Create failed: {{msg}}"
|
||||
},
|
||||
"sources": {
|
||||
"title": "Configure Sources",
|
||||
"next": "Proceed to Crawl",
|
||||
"listTitle": "Registered Sources",
|
||||
"listDesc": "Reference sites used for ontology construction",
|
||||
"empty": "No sources yet. Add one using the form on the right.",
|
||||
"addTitle": "Add Source",
|
||||
"addDesc": "Enter information about the reference site",
|
||||
"name": "Name",
|
||||
"type": "Type",
|
||||
"baseUrl": "Base URL",
|
||||
"trust": "Trust",
|
||||
"rateLimit": "rate/min",
|
||||
"respectRobots": "Respect robots.txt",
|
||||
"add": "Add Source",
|
||||
"delete": "Delete",
|
||||
"confirmDelete": "Delete source '{{name}}'?",
|
||||
"added": "Source added: {{name}}",
|
||||
"addFailed": "Add failed: {{msg}}",
|
||||
"deleted": "Source deleted: {{name}}",
|
||||
"deleteFailed": "Delete failed: {{msg}}"
|
||||
},
|
||||
"common": {
|
||||
"retry": "Retry",
|
||||
"cancel": "Cancel",
|
||||
|
||||
@@ -35,6 +35,28 @@
|
||||
"created": "프로젝트가 생성되었습니다: {{name}}",
|
||||
"createFailed": "생성 실패: {{msg}}"
|
||||
},
|
||||
"sources": {
|
||||
"title": "참고 소스 설정",
|
||||
"next": "크롤 진행",
|
||||
"listTitle": "등록된 소스",
|
||||
"listDesc": "프로젝트 온톨로지 구축에 사용할 참고 사이트 목록",
|
||||
"empty": "아직 등록된 소스가 없습니다. 오른쪽 폼에서 추가하세요.",
|
||||
"addTitle": "소스 추가",
|
||||
"addDesc": "참고할 사이트 정보를 입력하세요",
|
||||
"name": "이름",
|
||||
"type": "타입",
|
||||
"baseUrl": "Base URL",
|
||||
"trust": "신뢰도",
|
||||
"rateLimit": "rate/분",
|
||||
"respectRobots": "robots.txt 준수",
|
||||
"add": "소스 추가",
|
||||
"delete": "삭제",
|
||||
"confirmDelete": "정말 '{{name}}' 소스를 삭제하시겠습니까?",
|
||||
"added": "소스가 추가되었습니다: {{name}}",
|
||||
"addFailed": "추가 실패: {{msg}}",
|
||||
"deleted": "소스가 삭제되었습니다: {{name}}",
|
||||
"deleteFailed": "삭제 실패: {{msg}}"
|
||||
},
|
||||
"common": {
|
||||
"retry": "다시 시도",
|
||||
"cancel": "취소",
|
||||
|
||||
Reference in New Issue
Block a user