- Claude Code 활용 가이드 신규 추가 (스킬 8종 + 에이전트 3종) - 릴리즈 관리 가이드 신규 추가 (2계층 릴리즈 노트) - 초기 환경 설정에 GITEA_TOKEN 설정 섹션 추가 - Git 워크플로우에 /push, /mr 스킬 추천 보강 - 프로젝트 시작하기 템플릿 파일 구조 v1.5.0 업데이트 - chat 봇 연동/디자인 시스템 섹션 임시 주석처리 - 팀 워크플로우 v1.5.0 동기화 (스킬, 에이전트, 규칙)
50 lines
1.8 KiB
TypeScript
50 lines
1.8 KiB
TypeScript
import { lazy, Suspense, useEffect } from 'react';
|
|
import { useParams } from 'react-router';
|
|
import { api } from '../utils/api';
|
|
|
|
const CONTENT_MAP: Record<string, React.LazyExoticComponent<React.ComponentType>> = {
|
|
'env-intro': lazy(() => import('../content/DevEnvIntro')),
|
|
'initial-setup': lazy(() => import('../content/InitialSetup')),
|
|
'gitea-usage': lazy(() => import('../content/GiteaUsage')),
|
|
'git-workflow': lazy(() => import('../content/GitWorkflow')),
|
|
'starting-project': lazy(() => import('../content/StartingProject')),
|
|
'nexus-usage': lazy(() => import('../content/NexusUsage')),
|
|
'ci-cd': lazy(() => import('../content/CiCdGuide')),
|
|
'claude-code': lazy(() => import('../content/ClaudeCodeSkills')),
|
|
'release-mgmt': lazy(() => import('../content/ReleaseManagement')),
|
|
// 'chat-bot': lazy(() => import('../content/ChatBotIntegration')),
|
|
// 'design-system': lazy(() => import('../content/DesignSystem')),
|
|
};
|
|
|
|
export function GuidePage() {
|
|
const { section } = useParams<{ section: string }>();
|
|
const Content = section ? CONTENT_MAP[section] : null;
|
|
|
|
useEffect(() => {
|
|
if (section) {
|
|
api.post('/activity/track', { pagePath: `/dev/${section}` }).catch(() => {});
|
|
}
|
|
}, [section]);
|
|
|
|
if (!Content) {
|
|
return (
|
|
<div className="max-w-4xl mx-auto py-12 px-6">
|
|
<h1 className="text-3xl font-bold text-text-primary mb-4">페이지를 찾을 수 없습니다</h1>
|
|
<p className="text-text-secondary">요청한 가이드 섹션이 존재하지 않습니다.</p>
|
|
</div>
|
|
);
|
|
}
|
|
|
|
return (
|
|
<Suspense
|
|
fallback={
|
|
<div className="flex items-center justify-center py-20">
|
|
<div className="animate-spin h-6 w-6 border-3 border-accent border-t-transparent rounded-full" />
|
|
</div>
|
|
}
|
|
>
|
|
<Content />
|
|
</Suspense>
|
|
);
|
|
}
|