diff --git a/README.md b/README.md
index c206def..5d4b642 100644
--- a/README.md
+++ b/README.md
@@ -10,25 +10,36 @@
## 디렉토리 구조
-디렉토리 구조는 다음을 따를 예정입니다.
```bash
src/
├── app/ # 애플리케이션 진입점 및 전역 설정 (Router, Providers, 글로벌 스타일)
-├── assets/ # 정적 파일 (이미지, 폰트, 로티 애니메이션 등)
-├── components/ # 도메인에 종속되지 않는 공통 UI 컴포넌트 (버튼, 모달, 디자인 시스템)
+│ └── providers/ # React Context Provider 모음 (QueryProvider 등)
+├── assets/ # 정적 파일 (이미지, 폰트, SVG 아이콘 등)
+├── components/ # 도메인에 종속되지 않는 공통 UI 컴포넌트 (버튼, 카드, 디자인 시스템)
├── features/ # 핵심 비즈니스 로직 및 도메인 영역 (이 구조의 핵심)
-│ ├── auth/ # 특정 도메인 (예: 인증)
-│ │ ├── api/ # 해당 도메인 전용 API 통신 함수
+│ ├── home/ # 홈(랜딩) 도메인
+│ │ ├── content/ # 해당 도메인 전용 UI 텍스트·카피 (정적 콘텐츠)
│ │ ├── hooks/ # 해당 도메인 전용 커스텀 훅
-│ │ ├── store/ # 해당 도메인 전용 상태 (Zustand 등)
+│ │ └── ui/ # 해당 도메인 전용 UI 컴포넌트
+│ ├── report/ # 리포트 도메인
+│ │ ├── config/ # 섹션 ID·레이블 등 UI 설정값
+│ │ ├── hooks/ # 해당 도메인 전용 커스텀 훅
+│ │ ├── mocks/ # API 연동 전 임시 목업 데이터
│ │ ├── types/ # 해당 도메인 전용 타입 정의
│ │ └── ui/ # 해당 도메인 전용 UI 컴포넌트
-├── hooks/ # 전역에서 사용하는 공통 훅 (useClickOutside 등)
-├── layouts/ # 페이지 레이아웃 (GNB, Sidebar, 풋터 등)
-├── pages/ # 라우팅과 1:1 매칭되는 페이지 진입점 (여기서는 features의 컴포넌트만 조립)
+│ └── plan/ # 마케팅 플랜 도메인 (report와 동일한 구조)
+│ ├── config/
+│ ├── hooks/
+│ ├── mocks/
+│ ├── types/
+│ └── ui/
+├── hooks/ # 전역에서 사용하는 공통 훅 (useInView 등)
+├── layouts/ # 페이지 레이아웃 (GNB, SubNav, Footer 등)
+├── pages/ # 라우팅과 1:1 매칭되는 페이지 진입점 (features의 컴포넌트만 조립)
├── services/ # 공통 API 클라이언트 설정 (Axios 인스턴스, 인터셉터 등)
├── store/ # 전역 상태 관리 (사용자 세션, 테마 등)
-└── utils/ # 공통 유틸리티 함수 (날짜 포맷팅, 정규식 등)
+├── types/ # 여러 도메인에서 공유하는 공통 타입 정의
+└── utils/ # 공통 유틸리티 함수 (숫자 포맷팅, URL 처리 등)
```
## 시작하기
@@ -41,4 +52,4 @@ npm install
### 실행
```bash
npm run dev
-```
\ No newline at end of file
+```
diff --git a/src/app/providers/index.tsx b/src/app/providers/index.tsx
deleted file mode 100644
index e69de29..0000000
diff --git a/src/components/card/TopVideoCard.tsx b/src/components/card/TopVideoCard.tsx
index 790624f..7af811e 100644
--- a/src/components/card/TopVideoCard.tsx
+++ b/src/components/card/TopVideoCard.tsx
@@ -1,6 +1,6 @@
import type { CSSProperties } from "react";
import EyeIcon from "@/assets/icons/eye.svg?react";
-import { formatCompactNumber } from "@/lib/formatNumber";
+import { formatCompactNumber } from "@/utils/formatNumber";
export type TopVideoCardProps = {
title: string;
diff --git a/src/components/index.ts b/src/components/index.ts
index e083438..f4d7f9d 100644
--- a/src/components/index.ts
+++ b/src/components/index.ts
@@ -1,6 +1,4 @@
-export { ComparisonRow, type ComparisonRowProps } from "@/components/compare/ComparisonRow";
export { BrandConsistencyMap, type BrandConsistencyMapProps } from "@/components/brand/BrandConsistencyMap";
-export { OtherChannelRow, type OtherChannelRowProps } from "@/components/channel/OtherChannelRow";
export { SeverityBadge, type SeverityBadgeProps } from "@/components/badge/SeverityBadge";
export { ChannelScoreCard, type ChannelScoreCardProps } from "@/components/card/ChannelScoreCard";
export { InfoStatCard, type InfoStatCardProps } from "@/components/card/InfoStatCard";
@@ -8,7 +6,6 @@ export { MetricCard, type MetricCardProps } from "@/components/card/MetricCard";
export { PixelInstallCard, type PixelInstallCardProps } from "@/components/card/PixelInstallCard";
export { TopVideoCard, type TopVideoCardProps } from "@/components/card/TopVideoCard";
export { TagChipList, type TagChipListProps } from "@/components/chip/TagChipList";
-export { DiagnosisRow, type DiagnosisRowProps } from "@/components/diagnosis/DiagnosisRow";
export { ConsolidationCallout, type ConsolidationCalloutProps } from "@/components/panel/ConsolidationCallout";
export { HighlightPanel, type HighlightPanelProps } from "@/components/panel/HighlightPanel";
export { ScoreRing, type ScoreRingProps } from "@/components/rating/ScoreRing";
diff --git a/src/components/rating/StarRatingDisplay.tsx b/src/components/rating/StarRatingDisplay.tsx
index 5faade3..be71c1d 100644
--- a/src/components/rating/StarRatingDisplay.tsx
+++ b/src/components/rating/StarRatingDisplay.tsx
@@ -1,5 +1,5 @@
import StarIcon from "@/assets/icons/star.svg?react";
-import { formatCompactNumber } from "@/lib/formatNumber";
+import { formatCompactNumber } from "@/utils/formatNumber";
export type StarRatingDisplayProps = {
rating: number;
diff --git a/src/features/home/constants/cta_contents.ts b/src/features/home/content/cta.ts
similarity index 100%
rename from src/features/home/constants/cta_contents.ts
rename to src/features/home/content/cta.ts
diff --git a/src/features/home/constants/hero_contents.ts b/src/features/home/content/hero.ts
similarity index 100%
rename from src/features/home/constants/hero_contents.ts
rename to src/features/home/content/hero.ts
diff --git a/src/features/home/constants/modules_contents.ts b/src/features/home/content/modules.ts
similarity index 100%
rename from src/features/home/constants/modules_contents.ts
rename to src/features/home/content/modules.ts
diff --git a/src/features/home/constants/problem_contents.ts b/src/features/home/content/problem.ts
similarity index 100%
rename from src/features/home/constants/problem_contents.ts
rename to src/features/home/content/problem.ts
diff --git a/src/features/home/constants/process_contents.ts b/src/features/home/content/process.ts
similarity index 100%
rename from src/features/home/constants/process_contents.ts
rename to src/features/home/content/process.ts
diff --git a/src/features/home/constants/solution_contents.ts b/src/features/home/content/solution.ts
similarity index 100%
rename from src/features/home/constants/solution_contents.ts
rename to src/features/home/content/solution.ts
diff --git a/src/features/home/constants/use_cases_contents.ts b/src/features/home/content/useCases.ts
similarity index 100%
rename from src/features/home/constants/use_cases_contents.ts
rename to src/features/home/content/useCases.ts
diff --git a/src/features/home/ui/CTASection.tsx b/src/features/home/ui/CTASection.tsx
index 1f125ff..728c631 100644
--- a/src/features/home/ui/CTASection.tsx
+++ b/src/features/home/ui/CTASection.tsx
@@ -5,7 +5,7 @@ import {
CTA_FOOTNOTE,
CTA_HEADLINE,
CTA_URL_PLACEHOLDER,
-} from "@/features/home/constants/cta_contents";
+} from "@/features/home/content/cta";
import { useAnalyze } from "@/features/home/hooks/useAnalyze";
import { useInView } from "@/hooks/useInView";
diff --git a/src/features/home/ui/HeroSection.tsx b/src/features/home/ui/HeroSection.tsx
index 752acef..3e6cb2e 100644
--- a/src/features/home/ui/HeroSection.tsx
+++ b/src/features/home/ui/HeroSection.tsx
@@ -7,7 +7,7 @@ import {
HERO_LEAD_EN,
HERO_LEAD_KO,
HERO_URL_PLACEHOLDER,
-} from "@/features/home/constants/hero_contents";
+} from "@/features/home/content/hero";
import { useAnalyze } from "@/features/home/hooks/useAnalyze";
export function HeroSection() {
diff --git a/src/features/home/ui/ProblemSection.tsx b/src/features/home/ui/ProblemSection.tsx
index f8e86e0..7df2d8b 100644
--- a/src/features/home/ui/ProblemSection.tsx
+++ b/src/features/home/ui/ProblemSection.tsx
@@ -1,4 +1,4 @@
-import { PROBLEM_CARDS, PROBLEM_CARD_STAGGER } from "@/features/home/constants/problem_contents";
+import { PROBLEM_CARDS, PROBLEM_CARD_STAGGER } from "@/features/home/content/problem";
import { useInView } from "@/hooks/useInView";
export function ProblemSection() {
diff --git a/src/features/home/ui/SolutionSection.tsx b/src/features/home/ui/SolutionSection.tsx
index 476dbeb..5117eaa 100644
--- a/src/features/home/ui/SolutionSection.tsx
+++ b/src/features/home/ui/SolutionSection.tsx
@@ -1,4 +1,4 @@
-import { SOLUTION_CARDS } from "@/features/home/constants/solution_contents";
+import { SOLUTION_CARDS } from "@/features/home/content/solution";
import { useInView } from "@/hooks/useInView";
export function SolutionSection() {
diff --git a/src/features/home/ui/SystemSection.tsx b/src/features/home/ui/SystemSection.tsx
index 2f027cb..c676294 100644
--- a/src/features/home/ui/SystemSection.tsx
+++ b/src/features/home/ui/SystemSection.tsx
@@ -1,4 +1,4 @@
-import { CORE_MODULES, MODULE_CARD_STAGGER } from "@/features/home/constants/modules_contents";
+import { CORE_MODULES, MODULE_CARD_STAGGER } from "@/features/home/content/modules";
import { useInView } from "@/hooks/useInView";
import { CoreModuleCard } from "./system/CoreModuleCard";
import { CoreModulesCenterHeading } from "./system/CoreModulesCenterHeading";
diff --git a/src/features/home/ui/UseCaseSection.tsx b/src/features/home/ui/UseCaseSection.tsx
index 3dd69f6..ab3d32c 100644
--- a/src/features/home/ui/UseCaseSection.tsx
+++ b/src/features/home/ui/UseCaseSection.tsx
@@ -1,5 +1,5 @@
import CheckCircleIcon from "@/assets/home/check-circle.svg?react";
-import { USE_CASE_CARDS } from "@/features/home/constants/use_cases_contents";
+import { USE_CASE_CARDS } from "@/features/home/content/useCases";
import { useInView } from "@/hooks/useInView";
export function UseCaseSection() {
diff --git a/src/features/home/ui/process/AgdpEngineDiagram.tsx b/src/features/home/ui/process/AgdpEngineDiagram.tsx
index 01abb4d..6432a50 100644
--- a/src/features/home/ui/process/AgdpEngineDiagram.tsx
+++ b/src/features/home/ui/process/AgdpEngineDiagram.tsx
@@ -1,4 +1,4 @@
-import { AGDP_NODES } from "@/features/home/constants/process_contents";
+import { AGDP_NODES } from "@/features/home/content/process";
import { AgdpOrbitNode } from "./AgdpOrbitNode";
import { AgdpRewardPathLabel } from "./AgdpRewardPathLabel";
diff --git a/src/features/home/ui/process/AgdpOrbitNode.tsx b/src/features/home/ui/process/AgdpOrbitNode.tsx
index eb139d0..5703f6f 100644
--- a/src/features/home/ui/process/AgdpOrbitNode.tsx
+++ b/src/features/home/ui/process/AgdpOrbitNode.tsx
@@ -1,5 +1,5 @@
-import type { AgdpNodeDef } from "@/features/home/constants/process_contents";
-import { AGDP_SLOT_WRAPPER_CLASS } from "@/features/home/constants/process_contents";
+import type { AgdpNodeDef } from "@/features/home/content/process";
+import { AGDP_SLOT_WRAPPER_CLASS } from "@/features/home/content/process";
type Props = { node: AgdpNodeDef };
diff --git a/src/features/home/ui/system/CoreModuleCard.tsx b/src/features/home/ui/system/CoreModuleCard.tsx
index c0dc52a..198131f 100644
--- a/src/features/home/ui/system/CoreModuleCard.tsx
+++ b/src/features/home/ui/system/CoreModuleCard.tsx
@@ -1,4 +1,4 @@
-import type { CoreModule } from "@/features/home/constants/modules_contents";
+import type { CoreModule } from "@/features/home/content/modules";
type Props = {
mod: CoreModule;
diff --git a/src/features/plan/constants/plan_sections.ts b/src/features/plan/config/planSections.ts
similarity index 100%
rename from src/features/plan/constants/plan_sections.ts
rename to src/features/plan/config/planSections.ts
diff --git a/src/features/plan/hooks/useMarketingPlan.ts b/src/features/plan/hooks/useMarketingPlan.ts
index 5db5b48..35c0b5e 100644
--- a/src/features/plan/hooks/useMarketingPlan.ts
+++ b/src/features/plan/hooks/useMarketingPlan.ts
@@ -1,5 +1,5 @@
import { useMemo } from "react";
-import { MOCK_PLAN } from "@/features/plan/constants/mock_plan";
+import { MOCK_PLAN } from "@/features/plan/mocks/plan";
import type { MarketingPlan } from "@/features/plan/types/marketingPlan";
type UseMarketingPlanResult = {
diff --git a/src/features/plan/hooks/usePlanSubNav.ts b/src/features/plan/hooks/usePlanSubNav.ts
index d085a90..efd36f3 100644
--- a/src/features/plan/hooks/usePlanSubNav.ts
+++ b/src/features/plan/hooks/usePlanSubNav.ts
@@ -1,7 +1,7 @@
import { useEffect, useMemo, useState } from "react";
import { useMainSubNav } from "@/layouts/MainSubNavLayout";
import type { SubNavItem } from "@/layouts/SubNav";
-import { PLAN_SECTIONS } from "@/features/plan/constants/plan_sections";
+import { PLAN_SECTIONS } from "@/features/plan/config/planSections";
export function usePlanSubNav() {
const { setSubNav } = useMainSubNav();
diff --git a/src/features/plan/constants/mock_plan.ts b/src/features/plan/mocks/plan.ts
similarity index 100%
rename from src/features/plan/constants/mock_plan.ts
rename to src/features/plan/mocks/plan.ts
diff --git a/src/features/plan/ui/MarketingPlanPage.tsx b/src/features/plan/ui/MarketingPlanPage.tsx
deleted file mode 100644
index 095f469..0000000
--- a/src/features/plan/ui/MarketingPlanPage.tsx
+++ /dev/null
@@ -1,44 +0,0 @@
-import { useCurrentMarketingPlan } from "@/features/plan/hooks/useCurrentMarketingPlan";
-import { usePlanSubNav } from "@/features/plan/hooks/usePlanSubNav";
-import { PlanAssetCollectionSection } from "@/features/plan/ui/PlanAssetCollectionSection";
-import { PlanBrandingGuideSection } from "@/features/plan/ui/PlanBrandingGuideSection";
-import { PlanChannelStrategySection } from "@/features/plan/ui/PlanChannelStrategySection";
-import { PlanContentCalendarSection } from "@/features/plan/ui/PlanContentCalendarSection";
-import { PlanContentStrategySection } from "@/features/plan/ui/PlanContentStrategySection";
-import { PlanCtaSection } from "@/features/plan/ui/PlanCtaSection";
-import { PlanHeaderSection } from "@/features/plan/ui/PlanHeaderSection";
-import { PlanMyAssetUploadSection } from "@/features/plan/ui/PlanMyAssetUploadSection";
-
-export function MarketingPlanPage() {
- const { data, error } = useCurrentMarketingPlan();
-
- usePlanSubNav();
-
- if (error || !data) {
- return (
-
-
-
- 오류가 발생했습니다
-
-
- {error ?? "마케팅 플랜을 찾을 수 없습니다."}
-
-
-
- );
- }
-
- return (
-
-
-
-
-
-
-
-
-
-
- );
-}
diff --git a/src/features/plan/ui/PlanHeaderSection.tsx b/src/features/plan/ui/PlanHeaderSection.tsx
index a09ac68..8830fa8 100644
--- a/src/features/plan/ui/PlanHeaderSection.tsx
+++ b/src/features/plan/ui/PlanHeaderSection.tsx
@@ -2,7 +2,7 @@ import { useCurrentMarketingPlan } from "@/features/plan/hooks/useCurrentMarketi
import { PlanHeaderDaysBadge } from "@/features/plan/ui/header/PlanHeaderDaysBadge";
import { PlanHeaderHeroBlobs } from "@/features/plan/ui/header/PlanHeaderHeroBlobs";
import { PlanHeaderHeroColumn } from "@/features/plan/ui/header/PlanHeaderHeroColumn";
-import { PLAN_HEADER_BG_CLASS } from "@/features/plan/ui/header/planHeaderSectionStyles";
+import { PLAN_HEADER_BG_CLASS } from "@/features/plan/ui/header/planHeaderSectionClasses";
export function PlanHeaderSection() {
const { data, error } = useCurrentMarketingPlan();
diff --git a/src/features/plan/ui/assetCollection/AssetCollectionPanel.tsx b/src/features/plan/ui/assetCollection/AssetCollectionPanel.tsx
index eb49762..a5020b6 100644
--- a/src/features/plan/ui/assetCollection/AssetCollectionPanel.tsx
+++ b/src/features/plan/ui/assetCollection/AssetCollectionPanel.tsx
@@ -14,7 +14,7 @@ import {
assetTypeBadgeClass,
assetTypeDisplayLabel,
formatYoutubeViews,
-} from "@/features/plan/ui/assetCollection/assetCollectionBadgeClass";
+} from "@/features/plan/ui/assetCollection/assetCollectionBadgeClasses";
type AssetCollectionPanelProps = {
data: AssetCollectionData;
diff --git a/src/features/plan/ui/assetCollection/assetCollectionBadgeClass.ts b/src/features/plan/ui/assetCollection/assetCollectionBadgeClasses.ts
similarity index 100%
rename from src/features/plan/ui/assetCollection/assetCollectionBadgeClass.ts
rename to src/features/plan/ui/assetCollection/assetCollectionBadgeClasses.ts
diff --git a/src/features/plan/ui/branding/BrandingChannelRulesTab.tsx b/src/features/plan/ui/branding/BrandingChannelRulesTab.tsx
index 3fea650..f15c7fd 100644
--- a/src/features/plan/ui/branding/BrandingChannelRulesTab.tsx
+++ b/src/features/plan/ui/branding/BrandingChannelRulesTab.tsx
@@ -4,7 +4,7 @@ import { BrandingChannelIcon } from "@/features/plan/ui/branding/BrandingChannel
import {
brandingChannelStatusBadgeClass,
brandingChannelStatusLabel,
-} from "@/features/plan/ui/branding/brandingChannelStatusClass";
+} from "@/features/plan/ui/branding/brandingChannelStatusClasses";
type BrandingChannelRulesTabProps = {
channels: BrandGuide["channelBranding"];
diff --git a/src/features/plan/ui/branding/BrandingGuidePanel.tsx b/src/features/plan/ui/branding/BrandingGuidePanel.tsx
index c350514..694816c 100644
--- a/src/features/plan/ui/branding/BrandingGuidePanel.tsx
+++ b/src/features/plan/ui/branding/BrandingGuidePanel.tsx
@@ -2,7 +2,7 @@ import { useState } from "react";
import { BrandConsistencyMap } from "@/components/brand/BrandConsistencyMap";
import { SegmentTabButton } from "@/features/plan/ui/SegmentTabButton";
import type { BrandGuide } from "@/features/plan/types/marketingPlan";
-import { BRANDING_GUIDE_TAB_ITEMS, type BrandingGuideTabKey } from "@/features/plan/ui/branding/brandingTabItems";
+import { BRANDING_GUIDE_TAB_ITEMS, type BrandingGuideTabKey } from "@/features/plan/ui/branding/brandingTabs";
import { BrandingChannelRulesTab } from "@/features/plan/ui/branding/BrandingChannelRulesTab";
import { BrandingToneVoiceTab } from "@/features/plan/ui/branding/BrandingToneVoiceTab";
import { BrandingVisualIdentityTab } from "@/features/plan/ui/branding/BrandingVisualIdentityTab";
diff --git a/src/features/plan/ui/branding/brandingChannelStatusClass.ts b/src/features/plan/ui/branding/brandingChannelStatusClasses.ts
similarity index 100%
rename from src/features/plan/ui/branding/brandingChannelStatusClass.ts
rename to src/features/plan/ui/branding/brandingChannelStatusClasses.ts
diff --git a/src/features/plan/ui/branding/brandingTabItems.ts b/src/features/plan/ui/branding/brandingTabs.ts
similarity index 100%
rename from src/features/plan/ui/branding/brandingTabItems.ts
rename to src/features/plan/ui/branding/brandingTabs.ts
diff --git a/src/features/plan/ui/channelStrategy/ChannelStrategyGrid.tsx b/src/features/plan/ui/channelStrategy/ChannelStrategyGrid.tsx
index 0c0c577..6a731f2 100644
--- a/src/features/plan/ui/channelStrategy/ChannelStrategyGrid.tsx
+++ b/src/features/plan/ui/channelStrategy/ChannelStrategyGrid.tsx
@@ -3,7 +3,7 @@ import { Pill } from "@/components/atoms/Pill";
import { Surface } from "@/components/atoms/Surface";
import type { ChannelStrategyCard } from "@/features/plan/types/marketingPlan";
import { BrandingChannelIcon } from "@/features/plan/ui/branding/BrandingChannelIcon";
-import { channelStrategyPriorityPillClass } from "@/features/plan/ui/channelStrategy/channelStrategyPillClass";
+import { channelStrategyPriorityPillClass } from "@/features/plan/ui/channelStrategy/channelStrategyPillClasses";
type ChannelStrategyGridProps = {
channels: ChannelStrategyCard[];
diff --git a/src/features/plan/ui/channelStrategy/channelStrategyPillClass.ts b/src/features/plan/ui/channelStrategy/channelStrategyPillClasses.ts
similarity index 100%
rename from src/features/plan/ui/channelStrategy/channelStrategyPillClass.ts
rename to src/features/plan/ui/channelStrategy/channelStrategyPillClasses.ts
diff --git a/src/features/plan/ui/contentCalendar/ContentCalendarPanel.tsx b/src/features/plan/ui/contentCalendar/ContentCalendarPanel.tsx
index df6729d..d8bb16e 100644
--- a/src/features/plan/ui/contentCalendar/ContentCalendarPanel.tsx
+++ b/src/features/plan/ui/contentCalendar/ContentCalendarPanel.tsx
@@ -5,7 +5,7 @@ import {
CALENDAR_CONTENT_TYPE_LABELS,
CALENDAR_DAY_HEADERS,
calendarContentTypeVisual,
-} from "@/features/plan/ui/contentCalendar/calendarContentTypeVisual";
+} from "@/features/plan/ui/contentCalendar/calendarContentTypeClasses";
import { ContentCalendarTypeIcon } from "@/features/plan/ui/contentCalendar/ContentCalendarTypeIcon";
type ContentCalendarPanelProps = {
diff --git a/src/features/plan/ui/contentCalendar/calendarContentTypeVisual.ts b/src/features/plan/ui/contentCalendar/calendarContentTypeClasses.ts
similarity index 100%
rename from src/features/plan/ui/contentCalendar/calendarContentTypeVisual.ts
rename to src/features/plan/ui/contentCalendar/calendarContentTypeClasses.ts
diff --git a/src/features/plan/ui/contentStrategy/ContentStrategyPanel.tsx b/src/features/plan/ui/contentStrategy/ContentStrategyPanel.tsx
index a591be8..8fddf43 100644
--- a/src/features/plan/ui/contentStrategy/ContentStrategyPanel.tsx
+++ b/src/features/plan/ui/contentStrategy/ContentStrategyPanel.tsx
@@ -4,7 +4,7 @@ import type { ContentStrategyData } from "@/features/plan/types/marketingPlan";
import {
CONTENT_STRATEGY_TAB_ITEMS,
type ContentStrategyTabKey,
-} from "@/features/plan/ui/contentStrategy/contentStrategyTabItems";
+} from "@/features/plan/ui/contentStrategy/contentStrategyTabs";
import { ContentStrategyPillarsTab } from "@/features/plan/ui/contentStrategy/ContentStrategyPillarsTab";
import { ContentStrategyRepurposingTab } from "@/features/plan/ui/contentStrategy/ContentStrategyRepurposingTab";
import { ContentStrategyTypesTab } from "@/features/plan/ui/contentStrategy/ContentStrategyTypesTab";
diff --git a/src/features/plan/ui/contentStrategy/ContentStrategyTypesTab.tsx b/src/features/plan/ui/contentStrategy/ContentStrategyTypesTab.tsx
index 2d29a22..f326001 100644
--- a/src/features/plan/ui/contentStrategy/ContentStrategyTypesTab.tsx
+++ b/src/features/plan/ui/contentStrategy/ContentStrategyTypesTab.tsx
@@ -1,6 +1,6 @@
import { Pill } from "@/components/atoms/Pill";
import type { ContentTypeRow } from "@/features/plan/types/marketingPlan";
-import { contentStrategyChannelBadgeClass } from "@/features/plan/ui/contentStrategy/contentStrategyChannelBadgeClass";
+import { contentStrategyChannelBadgeClass } from "@/features/plan/ui/contentStrategy/contentStrategyChannelBadgeClasses";
type ContentStrategyTypesTabProps = {
rows: ContentTypeRow[];
diff --git a/src/features/plan/ui/contentStrategy/contentStrategyChannelBadgeClass.ts b/src/features/plan/ui/contentStrategy/contentStrategyChannelBadgeClasses.ts
similarity index 100%
rename from src/features/plan/ui/contentStrategy/contentStrategyChannelBadgeClass.ts
rename to src/features/plan/ui/contentStrategy/contentStrategyChannelBadgeClasses.ts
diff --git a/src/features/plan/ui/contentStrategy/contentStrategyTabItems.ts b/src/features/plan/ui/contentStrategy/contentStrategyTabs.ts
similarity index 100%
rename from src/features/plan/ui/contentStrategy/contentStrategyTabItems.ts
rename to src/features/plan/ui/contentStrategy/contentStrategyTabs.ts
diff --git a/src/features/plan/ui/header/PlanHeaderMetaChips.tsx b/src/features/plan/ui/header/PlanHeaderMetaChips.tsx
index e9d542a..8209915 100644
--- a/src/features/plan/ui/header/PlanHeaderMetaChips.tsx
+++ b/src/features/plan/ui/header/PlanHeaderMetaChips.tsx
@@ -1,6 +1,6 @@
import CalendarIcon from "@/assets/report/calendar.svg?react";
import GlobeIcon from "@/assets/report/globe.svg?react";
-import { PLAN_HEADER_META_CHIP_CLASS } from "@/features/plan/ui/header/planHeaderSectionStyles";
+import { PLAN_HEADER_META_CHIP_CLASS } from "@/features/plan/ui/header/planHeaderSectionClasses";
type PlanHeaderMetaChipsProps = {
date: string;
diff --git a/src/features/plan/ui/header/planHeaderSectionStyles.ts b/src/features/plan/ui/header/planHeaderSectionClasses.ts
similarity index 100%
rename from src/features/plan/ui/header/planHeaderSectionStyles.ts
rename to src/features/plan/ui/header/planHeaderSectionClasses.ts
diff --git a/src/features/report/constants/report_sections.ts b/src/features/report/config/reportSections.ts
similarity index 100%
rename from src/features/report/constants/report_sections.ts
rename to src/features/report/config/reportSections.ts
diff --git a/src/features/report/hooks/useReportSubNav.ts b/src/features/report/hooks/useReportSubNav.ts
index 950daaa..7188e27 100644
--- a/src/features/report/hooks/useReportSubNav.ts
+++ b/src/features/report/hooks/useReportSubNav.ts
@@ -1,7 +1,7 @@
import { useEffect, useMemo, useState } from "react";
import { useMainSubNav } from "@/layouts/MainSubNavLayout";
import type { SubNavItem } from "@/layouts/SubNav";
-import { REPORT_SECTIONS } from "@/features/report/constants/report_sections";
+import { REPORT_SECTIONS } from "@/features/report/config/reportSections";
export function useReportSubNav() {
const { setSubNav } = useMainSubNav();
diff --git a/src/features/report/constants/mock_channel_scores.ts b/src/features/report/mocks/channelScores.ts
similarity index 100%
rename from src/features/report/constants/mock_channel_scores.ts
rename to src/features/report/mocks/channelScores.ts
diff --git a/src/features/report/constants/mock_clinic_snapshot.ts b/src/features/report/mocks/clinicSnapshot.ts
similarity index 100%
rename from src/features/report/constants/mock_clinic_snapshot.ts
rename to src/features/report/mocks/clinicSnapshot.ts
diff --git a/src/features/report/constants/mock_facebook_audit.ts b/src/features/report/mocks/facebookAudit.ts
similarity index 100%
rename from src/features/report/constants/mock_facebook_audit.ts
rename to src/features/report/mocks/facebookAudit.ts
diff --git a/src/features/report/constants/mock_instagram_audit.ts b/src/features/report/mocks/instagramAudit.ts
similarity index 100%
rename from src/features/report/constants/mock_instagram_audit.ts
rename to src/features/report/mocks/instagramAudit.ts
diff --git a/src/features/report/constants/mock_kpi.ts b/src/features/report/mocks/kpi.ts
similarity index 100%
rename from src/features/report/constants/mock_kpi.ts
rename to src/features/report/mocks/kpi.ts
diff --git a/src/features/report/constants/mock_other_channels.ts b/src/features/report/mocks/otherChannels.ts
similarity index 95%
rename from src/features/report/constants/mock_other_channels.ts
rename to src/features/report/mocks/otherChannels.ts
index d2b29fb..a970a54 100644
--- a/src/features/report/constants/mock_other_channels.ts
+++ b/src/features/report/mocks/otherChannels.ts
@@ -1,4 +1,4 @@
-import type { OtherChannelsReport } from "@/types/otherChannels";
+import type { OtherChannelsReport } from "@/features/report/types/otherChannels";
/** DEMO `mockReport` 기타 채널 + 웹사이트 진단 */
export const MOCK_OTHER_CHANNELS_REPORT: OtherChannelsReport = {
diff --git a/src/features/report/constants/mock_problem_diagnosis.ts b/src/features/report/mocks/problemDiagnosis.ts
similarity index 100%
rename from src/features/report/constants/mock_problem_diagnosis.ts
rename to src/features/report/mocks/problemDiagnosis.ts
diff --git a/src/features/report/constants/mock_report_overview.ts b/src/features/report/mocks/reportOverview.ts
similarity index 100%
rename from src/features/report/constants/mock_report_overview.ts
rename to src/features/report/mocks/reportOverview.ts
diff --git a/src/features/report/constants/mock_roadmap.ts b/src/features/report/mocks/roadmap.ts
similarity index 100%
rename from src/features/report/constants/mock_roadmap.ts
rename to src/features/report/mocks/roadmap.ts
diff --git a/src/features/report/constants/mock_transformation.ts b/src/features/report/mocks/transformation.ts
similarity index 100%
rename from src/features/report/constants/mock_transformation.ts
rename to src/features/report/mocks/transformation.ts
diff --git a/src/features/report/constants/mock_youtube_audit.ts b/src/features/report/mocks/youtubeAudit.ts
similarity index 100%
rename from src/features/report/constants/mock_youtube_audit.ts
rename to src/features/report/mocks/youtubeAudit.ts
diff --git a/src/types/otherChannels.ts b/src/features/report/types/otherChannels.ts
similarity index 100%
rename from src/types/otherChannels.ts
rename to src/features/report/types/otherChannels.ts
diff --git a/src/features/report/ui/ReportChannelsSection.tsx b/src/features/report/ui/ReportChannelsSection.tsx
index 5a1392f..acced32 100644
--- a/src/features/report/ui/ReportChannelsSection.tsx
+++ b/src/features/report/ui/ReportChannelsSection.tsx
@@ -1,5 +1,5 @@
import { PageSection } from "@/components/section/PageSection";
-import { MOCK_CHANNEL_SCORES } from "@/features/report/constants/mock_channel_scores";
+import { MOCK_CHANNEL_SCORES } from "@/features/report/mocks/channelScores";
import type { ChannelScore } from "@/features/report/types/channelScore";
import { ChannelScoreGrid } from "@/features/report/ui/channels/ChannelScoreGrid";
diff --git a/src/features/report/ui/ReportClinicSection.tsx b/src/features/report/ui/ReportClinicSection.tsx
index f44ff2f..86ba7ec 100644
--- a/src/features/report/ui/ReportClinicSection.tsx
+++ b/src/features/report/ui/ReportClinicSection.tsx
@@ -1,5 +1,5 @@
import { PageSection } from "@/components/section/PageSection";
-import { MOCK_CLINIC_SNAPSHOT } from "@/features/report/constants/mock_clinic_snapshot";
+import { MOCK_CLINIC_SNAPSHOT } from "@/features/report/mocks/clinicSnapshot";
import type { ClinicSnapshot } from "@/features/report/types/clinicSnapshot";
import { ClinicCertificationsBlock } from "@/features/report/ui/clinic/ClinicCertificationsBlock";
import { ClinicInfoStatGrid } from "@/features/report/ui/clinic/ClinicInfoStatGrid";
diff --git a/src/features/report/ui/ReportDiagnosisSection.tsx b/src/features/report/ui/ReportDiagnosisSection.tsx
index c463579..774ab84 100644
--- a/src/features/report/ui/ReportDiagnosisSection.tsx
+++ b/src/features/report/ui/ReportDiagnosisSection.tsx
@@ -1,5 +1,5 @@
import { PageSection } from "@/components/section/PageSection";
-import { MOCK_PROBLEM_DIAGNOSIS } from "@/features/report/constants/mock_problem_diagnosis";
+import { MOCK_PROBLEM_DIAGNOSIS } from "@/features/report/mocks/problemDiagnosis";
import type { DiagnosisItem } from "@/features/report/types/diagnosis";
import { ProblemDiagnosisCard } from "@/features/report/ui/diagnosis/ProblemDiagnosisCard";
diff --git a/src/features/report/ui/ReportFacebookSection.tsx b/src/features/report/ui/ReportFacebookSection.tsx
index 099ad9f..d1c4b19 100644
--- a/src/features/report/ui/ReportFacebookSection.tsx
+++ b/src/features/report/ui/ReportFacebookSection.tsx
@@ -1,9 +1,9 @@
import GlobeIcon from "@/assets/report/globe.svg?react";
import { BrandConsistencyMap } from "@/components/brand/BrandConsistencyMap";
-import { DiagnosisRow } from "@/components/diagnosis/DiagnosisRow";
+import { DiagnosisRow } from "@/features/report/ui/diagnosis/DiagnosisRow";
import { ConsolidationCallout } from "@/components/panel/ConsolidationCallout";
import { PageSection } from "@/components/section/PageSection";
-import { MOCK_FACEBOOK_AUDIT } from "@/features/report/constants/mock_facebook_audit";
+import { MOCK_FACEBOOK_AUDIT } from "@/features/report/mocks/facebookAudit";
import type { FacebookAudit } from "@/features/report/types/facebookAudit";
import { FacebookPageCard } from "@/features/report/ui/facebook/FacebookPageCard";
diff --git a/src/features/report/ui/ReportInstagramSection.tsx b/src/features/report/ui/ReportInstagramSection.tsx
index f88808f..9c796ed 100644
--- a/src/features/report/ui/ReportInstagramSection.tsx
+++ b/src/features/report/ui/ReportInstagramSection.tsx
@@ -1,6 +1,6 @@
-import { DiagnosisRow } from "@/components/diagnosis/DiagnosisRow";
+import { DiagnosisRow } from "@/features/report/ui/diagnosis/DiagnosisRow";
import { PageSection } from "@/components/section/PageSection";
-import { MOCK_INSTAGRAM_AUDIT } from "@/features/report/constants/mock_instagram_audit";
+import { MOCK_INSTAGRAM_AUDIT } from "@/features/report/mocks/instagramAudit";
import type { InstagramAudit } from "@/features/report/types/instagramAudit";
import { InstagramAccountCard } from "@/features/report/ui/instagram/InstagramAccountCard";
diff --git a/src/features/report/ui/ReportKpiSection.tsx b/src/features/report/ui/ReportKpiSection.tsx
index a0de3b3..d7ac409 100644
--- a/src/features/report/ui/ReportKpiSection.tsx
+++ b/src/features/report/ui/ReportKpiSection.tsx
@@ -1,5 +1,5 @@
import { PageSection } from "@/components/section/PageSection";
-import { MOCK_KPI_METRICS } from "@/features/report/constants/mock_kpi";
+import { MOCK_KPI_METRICS } from "@/features/report/mocks/kpi";
import type { KpiMetric } from "@/features/report/types/kpiDashboard";
import { KpiMetricsTable } from "@/features/report/ui/kpi/KpiMetricsTable";
import { KpiTransformationCtaCard } from "@/features/report/ui/kpi/KpiTransformationCtaCard";
diff --git a/src/features/report/ui/ReportOtherChannelsSection.tsx b/src/features/report/ui/ReportOtherChannelsSection.tsx
index 8b3c0c4..dc88de5 100644
--- a/src/features/report/ui/ReportOtherChannelsSection.tsx
+++ b/src/features/report/ui/ReportOtherChannelsSection.tsx
@@ -1,6 +1,6 @@
import { PageSection } from "@/components/section/PageSection";
-import { MOCK_OTHER_CHANNELS_REPORT } from "@/features/report/constants/mock_other_channels";
-import type { OtherChannelsReport } from "@/types/otherChannels";
+import { MOCK_OTHER_CHANNELS_REPORT } from "@/features/report/mocks/otherChannels";
+import type { OtherChannelsReport } from "@/features/report/types/otherChannels";
import { OtherChannelsList } from "@/features/report/ui/otherChannels/OtherChannelsList";
import { WebsiteTechAuditBlock } from "@/features/report/ui/otherChannels/WebsiteTechAuditBlock";
diff --git a/src/features/report/ui/ReportOverviewSection.tsx b/src/features/report/ui/ReportOverviewSection.tsx
index a3ecc3d..77cf445 100644
--- a/src/features/report/ui/ReportOverviewSection.tsx
+++ b/src/features/report/ui/ReportOverviewSection.tsx
@@ -1,9 +1,9 @@
-import { MOCK_REPORT_OVERVIEW } from "@/features/report/constants/mock_report_overview";
+import { MOCK_REPORT_OVERVIEW } from "@/features/report/mocks/reportOverview";
import type { ReportOverviewData } from "@/features/report/types/reportOverview";
import { OverviewHeroBlobs } from "@/features/report/ui/overview/OverviewHeroBlobs";
import { OverviewHeroColumn } from "@/features/report/ui/overview/OverviewHeroColumn";
import { OverviewScorePanel } from "@/features/report/ui/overview/OverviewScorePanel";
-import { OVERVIEW_SECTION_BG_CLASS } from "@/features/report/ui/overview/overviewSectionStyles";
+import { OVERVIEW_SECTION_BG_CLASS } from "@/features/report/ui/overview/overviewSectionClasses";
type ReportOverviewSectionProps = {
data?: ReportOverviewData;
diff --git a/src/features/report/ui/ReportPage.tsx b/src/features/report/ui/ReportPage.tsx
deleted file mode 100644
index c4e7891..0000000
--- a/src/features/report/ui/ReportPage.tsx
+++ /dev/null
@@ -1,40 +0,0 @@
-import { useParams } from "react-router-dom";
-import { useReportSubNav } from "@/features/report/hooks/useReportSubNav";
-import { ReportChannelsSection } from "@/features/report/ui/ReportChannelsSection";
-import { ReportClinicSection } from "@/features/report/ui/ReportClinicSection";
-import { ReportDiagnosisSection } from "@/features/report/ui/ReportDiagnosisSection";
-import { ReportFacebookSection } from "@/features/report/ui/ReportFacebookSection";
-import { ReportInstagramSection } from "@/features/report/ui/ReportInstagramSection";
-import { ReportKpiSection } from "@/features/report/ui/ReportKpiSection";
-import { ReportOtherChannelsSection } from "@/features/report/ui/ReportOtherChannelsSection";
-import { ReportOverviewSection } from "@/features/report/ui/ReportOverviewSection";
-import { ReportRoadmapSection } from "@/features/report/ui/ReportRoadmapSection";
-import { ReportTransformationSection } from "@/features/report/ui/ReportTransformationSection";
-import { ReportYouTubeSection } from "@/features/report/ui/ReportYouTubeSection";
-
-export function ReportPage() {
- const { id } = useParams<{ id: string }>();
- useReportSubNav();
-
- return (
-
-
- Report ID: {id}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- );
-}
diff --git a/src/features/report/ui/ReportRoadmapSection.tsx b/src/features/report/ui/ReportRoadmapSection.tsx
index c376c98..c840144 100644
--- a/src/features/report/ui/ReportRoadmapSection.tsx
+++ b/src/features/report/ui/ReportRoadmapSection.tsx
@@ -1,5 +1,5 @@
import { PageSection } from "@/components/section/PageSection";
-import { MOCK_ROADMAP } from "@/features/report/constants/mock_roadmap";
+import { MOCK_ROADMAP } from "@/features/report/mocks/roadmap";
import type { RoadmapMonth } from "@/features/report/types/roadmap";
import { RoadmapMonthsGrid } from "@/features/report/ui/roadmap/RoadmapMonthsGrid";
diff --git a/src/features/report/ui/ReportTransformationSection.tsx b/src/features/report/ui/ReportTransformationSection.tsx
index 0c88b83..c935fee 100644
--- a/src/features/report/ui/ReportTransformationSection.tsx
+++ b/src/features/report/ui/ReportTransformationSection.tsx
@@ -1,5 +1,5 @@
import { PageSection } from "@/components/section/PageSection";
-import { MOCK_TRANSFORMATION } from "@/features/report/constants/mock_transformation";
+import { MOCK_TRANSFORMATION } from "@/features/report/mocks/transformation";
import type { TransformationProposal } from "@/features/report/types/transformationProposal";
import { TransformationTabbedView } from "@/features/report/ui/transformation/TransformationTabbedView";
diff --git a/src/features/report/ui/ReportYouTubeSection.tsx b/src/features/report/ui/ReportYouTubeSection.tsx
index 4c64914..eca4e52 100644
--- a/src/features/report/ui/ReportYouTubeSection.tsx
+++ b/src/features/report/ui/ReportYouTubeSection.tsx
@@ -1,7 +1,7 @@
import { TagChipList } from "@/components/chip/TagChipList";
-import { DiagnosisRow } from "@/components/diagnosis/DiagnosisRow";
+import { DiagnosisRow } from "@/features/report/ui/diagnosis/DiagnosisRow";
import { PageSection } from "@/components/section/PageSection";
-import { MOCK_YOUTUBE_AUDIT } from "@/features/report/constants/mock_youtube_audit";
+import { MOCK_YOUTUBE_AUDIT } from "@/features/report/mocks/youtubeAudit";
import type { YouTubeAudit } from "@/features/report/types/youtubeAudit";
import { YouTubeChannelInfoCard } from "@/features/report/ui/youtube/YouTubeChannelInfoCard";
import { YouTubeMetricsGrid } from "@/features/report/ui/youtube/YouTubeMetricsGrid";
diff --git a/src/features/report/ui/clinic/clinicSnapshotStatRows.tsx b/src/features/report/ui/clinic/clinicSnapshotStatRows.tsx
index 50c9f83..46a012f 100644
--- a/src/features/report/ui/clinic/clinicSnapshotStatRows.tsx
+++ b/src/features/report/ui/clinic/clinicSnapshotStatRows.tsx
@@ -6,7 +6,7 @@ import CalendarIcon from "@/assets/report/calendar.svg?react";
import GlobeIcon from "@/assets/report/globe.svg?react";
import MapPinIcon from "@/assets/report/map-pin.svg?react";
import type { ClinicSnapshot } from "@/features/report/types/clinicSnapshot";
-import { formatCompactNumber } from "@/lib/formatNumber";
+import { formatCompactNumber } from "@/utils/formatNumber";
export type ClinicStatRow = {
label: string;
diff --git a/src/components/diagnosis/DiagnosisRow.tsx b/src/features/report/ui/diagnosis/DiagnosisRow.tsx
similarity index 100%
rename from src/components/diagnosis/DiagnosisRow.tsx
rename to src/features/report/ui/diagnosis/DiagnosisRow.tsx
diff --git a/src/features/report/ui/diagnosis/ProblemDiagnosisCard.tsx b/src/features/report/ui/diagnosis/ProblemDiagnosisCard.tsx
index 2e4337b..a465ef5 100644
--- a/src/features/report/ui/diagnosis/ProblemDiagnosisCard.tsx
+++ b/src/features/report/ui/diagnosis/ProblemDiagnosisCard.tsx
@@ -1,6 +1,6 @@
import AlertCircleIcon from "@/assets/icons/alert-circle.svg?react";
import type { DiagnosisItem } from "@/features/report/types/diagnosis";
-import { problemDiagnosisSeverityDotClass } from "@/features/report/ui/diagnosis/severityDotClass";
+import { problemDiagnosisSeverityDotClass } from "@/features/report/ui/diagnosis/severityDotClasses";
export type ProblemDiagnosisCardProps = {
item: DiagnosisItem;
diff --git a/src/features/report/ui/diagnosis/severityDotClass.ts b/src/features/report/ui/diagnosis/severityDotClasses.ts
similarity index 100%
rename from src/features/report/ui/diagnosis/severityDotClass.ts
rename to src/features/report/ui/diagnosis/severityDotClasses.ts
diff --git a/src/features/report/ui/facebook/FacebookPageCard.tsx b/src/features/report/ui/facebook/FacebookPageCard.tsx
index 918ebdb..0635074 100644
--- a/src/features/report/ui/facebook/FacebookPageCard.tsx
+++ b/src/features/report/ui/facebook/FacebookPageCard.tsx
@@ -8,9 +8,9 @@ import ImageIcon from "@/assets/report/image.svg?react";
import Link2Icon from "@/assets/report/link-2.svg?react";
import MessageCircleIcon from "@/assets/report/message-circle.svg?react";
import type { FacebookPage } from "@/features/report/types/facebookAudit";
-import { facebookLangBadgeClass } from "@/features/report/ui/facebook/langBadgeClass";
-import { formatCompactNumber } from "@/lib/formatNumber";
-import { safeUrl } from "@/lib/safeUrl";
+import { facebookLangBadgeClass } from "@/features/report/ui/facebook/langBadgeClasses";
+import { formatCompactNumber } from "@/utils/formatNumber";
+import { safeUrl } from "@/utils/safeUrl";
export type FacebookPageCardProps = {
page: FacebookPage;
diff --git a/src/features/report/ui/facebook/langBadgeClass.ts b/src/features/report/ui/facebook/langBadgeClasses.ts
similarity index 100%
rename from src/features/report/ui/facebook/langBadgeClass.ts
rename to src/features/report/ui/facebook/langBadgeClasses.ts
diff --git a/src/features/report/ui/instagram/InstagramAccountCard.tsx b/src/features/report/ui/instagram/InstagramAccountCard.tsx
index 866faca..60ae0e8 100644
--- a/src/features/report/ui/instagram/InstagramAccountCard.tsx
+++ b/src/features/report/ui/instagram/InstagramAccountCard.tsx
@@ -3,9 +3,9 @@ import ChannelInstagramIcon from "@/assets/icons/channel-instagram.svg?react";
import ExternalLinkIcon from "@/assets/icons/external-link.svg?react";
import { TagChipList } from "@/components/chip/TagChipList";
import type { InstagramAccount } from "@/features/report/types/instagramAudit";
-import { instagramLangBadgeClass } from "@/features/report/ui/instagram/langBadgeClass";
-import { formatCompactNumber } from "@/lib/formatNumber";
-import { safeUrl } from "@/lib/safeUrl";
+import { instagramLangBadgeClass } from "@/features/report/ui/instagram/langBadgeClasses";
+import { formatCompactNumber } from "@/utils/formatNumber";
+import { safeUrl } from "@/utils/safeUrl";
export type InstagramAccountCardProps = {
account: InstagramAccount;
diff --git a/src/features/report/ui/instagram/langBadgeClass.ts b/src/features/report/ui/instagram/langBadgeClasses.ts
similarity index 100%
rename from src/features/report/ui/instagram/langBadgeClass.ts
rename to src/features/report/ui/instagram/langBadgeClasses.ts
diff --git a/src/components/channel/OtherChannelRow.tsx b/src/features/report/ui/otherChannels/OtherChannelRow.tsx
similarity index 94%
rename from src/components/channel/OtherChannelRow.tsx
rename to src/features/report/ui/otherChannels/OtherChannelRow.tsx
index dbb2c32..24efdcf 100644
--- a/src/components/channel/OtherChannelRow.tsx
+++ b/src/features/report/ui/otherChannels/OtherChannelRow.tsx
@@ -2,8 +2,8 @@ import ExternalLinkIcon from "@/assets/icons/external-link.svg?react";
import CheckCircleIcon from "@/assets/report/check-circle.svg?react";
import HelpCircleIcon from "@/assets/report/help-circle.svg?react";
import XCircleIcon from "@/assets/report/x-circle.svg?react";
-import type { OtherChannelStatus } from "@/types/otherChannels";
-import { safeUrl } from "@/lib/safeUrl";
+import type { OtherChannelStatus } from "@/features/report/types/otherChannels";
+import { safeUrl } from "@/utils/safeUrl";
export type OtherChannelRowProps = {
name: string;
diff --git a/src/features/report/ui/otherChannels/OtherChannelsList.tsx b/src/features/report/ui/otherChannels/OtherChannelsList.tsx
index e9ad3ef..9b5ccc0 100644
--- a/src/features/report/ui/otherChannels/OtherChannelsList.tsx
+++ b/src/features/report/ui/otherChannels/OtherChannelsList.tsx
@@ -1,5 +1,5 @@
-import { OtherChannelRow } from "@/components/channel/OtherChannelRow";
-import type { OtherChannel } from "@/types/otherChannels";
+import { OtherChannelRow } from "@/features/report/ui/otherChannels/OtherChannelRow";
+import type { OtherChannel } from "@/features/report/types/otherChannels";
export type OtherChannelsListProps = {
channels: OtherChannel[];
diff --git a/src/features/report/ui/otherChannels/WebsiteTechAuditBlock.tsx b/src/features/report/ui/otherChannels/WebsiteTechAuditBlock.tsx
index 09735b0..67b7e2b 100644
--- a/src/features/report/ui/otherChannels/WebsiteTechAuditBlock.tsx
+++ b/src/features/report/ui/otherChannels/WebsiteTechAuditBlock.tsx
@@ -2,7 +2,7 @@ import AlertCircleIcon from "@/assets/icons/alert-circle.svg?react";
import CheckCircleIcon from "@/assets/report/check-circle.svg?react";
import GlobeIcon from "@/assets/report/globe.svg?react";
import { PixelInstallCard } from "@/components/card/PixelInstallCard";
-import type { WebsiteAudit } from "@/types/otherChannels";
+import type { WebsiteAudit } from "@/features/report/types/otherChannels";
export type WebsiteTechAuditBlockProps = {
website: WebsiteAudit;
diff --git a/src/features/report/ui/overview/OverviewMetaChips.tsx b/src/features/report/ui/overview/OverviewMetaChips.tsx
index 20a9740..bc16b51 100644
--- a/src/features/report/ui/overview/OverviewMetaChips.tsx
+++ b/src/features/report/ui/overview/OverviewMetaChips.tsx
@@ -1,7 +1,7 @@
import CalendarIcon from "@/assets/report/calendar.svg?react";
import GlobeIcon from "@/assets/report/globe.svg?react";
import MapPinIcon from "@/assets/report/map-pin.svg?react";
-import { OVERVIEW_META_CHIP_CLASS } from "@/features/report/ui/overview/overviewSectionStyles";
+import { OVERVIEW_META_CHIP_CLASS } from "@/features/report/ui/overview/overviewSectionClasses";
export type OverviewMetaChipsProps = {
date: string;
diff --git a/src/features/report/ui/overview/overviewSectionStyles.ts b/src/features/report/ui/overview/overviewSectionClasses.ts
similarity index 100%
rename from src/features/report/ui/overview/overviewSectionStyles.ts
rename to src/features/report/ui/overview/overviewSectionClasses.ts
diff --git a/src/components/compare/ComparisonRow.tsx b/src/features/report/ui/transformation/ComparisonRow.tsx
similarity index 100%
rename from src/components/compare/ComparisonRow.tsx
rename to src/features/report/ui/transformation/ComparisonRow.tsx
diff --git a/src/features/report/ui/transformation/NewChannelProposalsTable.tsx b/src/features/report/ui/transformation/NewChannelProposalsTable.tsx
index 0d41f64..813b627 100644
--- a/src/features/report/ui/transformation/NewChannelProposalsTable.tsx
+++ b/src/features/report/ui/transformation/NewChannelProposalsTable.tsx
@@ -1,5 +1,5 @@
import type { NewChannelProposal } from "@/features/report/types/transformationProposal";
-import { newChannelPriorityClass } from "@/features/report/ui/transformation/newChannelPriorityClass";
+import { newChannelPriorityClass } from "@/features/report/ui/transformation/newChannelPriorityClasses";
export type NewChannelProposalsTableProps = {
rows: NewChannelProposal[];
diff --git a/src/features/report/ui/transformation/TransformationTabbedView.tsx b/src/features/report/ui/transformation/TransformationTabbedView.tsx
index 9cc9478..54c8a2c 100644
--- a/src/features/report/ui/transformation/TransformationTabbedView.tsx
+++ b/src/features/report/ui/transformation/TransformationTabbedView.tsx
@@ -1,5 +1,5 @@
import { useState } from "react";
-import { ComparisonRow } from "@/components/compare/ComparisonRow";
+import { ComparisonRow } from "@/features/report/ui/transformation/ComparisonRow";
import type { TransformationProposal } from "@/features/report/types/transformationProposal";
import { NewChannelProposalsTable } from "@/features/report/ui/transformation/NewChannelProposalsTable";
import { PlatformStrategyCard } from "@/features/report/ui/transformation/PlatformStrategyCard";
diff --git a/src/features/report/ui/transformation/newChannelPriorityClass.ts b/src/features/report/ui/transformation/newChannelPriorityClasses.ts
similarity index 100%
rename from src/features/report/ui/transformation/newChannelPriorityClass.ts
rename to src/features/report/ui/transformation/newChannelPriorityClasses.ts
diff --git a/src/features/report/ui/youtube/YouTubeChannelInfoCard.tsx b/src/features/report/ui/youtube/YouTubeChannelInfoCard.tsx
index d01c710..30cb067 100644
--- a/src/features/report/ui/youtube/YouTubeChannelInfoCard.tsx
+++ b/src/features/report/ui/youtube/YouTubeChannelInfoCard.tsx
@@ -1,7 +1,7 @@
import ChannelYoutubeIcon from "@/assets/icons/channel-youtube.svg?react";
import ExternalLinkIcon from "@/assets/icons/external-link.svg?react";
import type { YouTubeAudit } from "@/features/report/types/youtubeAudit";
-import { safeUrl } from "@/lib/safeUrl";
+import { safeUrl } from "@/utils/safeUrl";
export type YouTubeChannelInfoCardProps = {
data: YouTubeAudit;
diff --git a/src/features/report/ui/youtube/YouTubeMetricsGrid.tsx b/src/features/report/ui/youtube/YouTubeMetricsGrid.tsx
index b332eff..66d14ad 100644
--- a/src/features/report/ui/youtube/YouTubeMetricsGrid.tsx
+++ b/src/features/report/ui/youtube/YouTubeMetricsGrid.tsx
@@ -4,7 +4,7 @@ import VideoIcon from "@/assets/icons/video.svg?react";
import UsersIcon from "@/assets/icons/users.svg?react";
import { MetricCard } from "@/components/card/MetricCard";
import type { YouTubeAudit } from "@/features/report/types/youtubeAudit";
-import { formatCompactNumber } from "@/lib/formatNumber";
+import { formatCompactNumber } from "@/utils/formatNumber";
export type YouTubeMetricsGridProps = {
data: YouTubeAudit;
diff --git a/src/layouts/PageNavigator.tsx b/src/layouts/PageNavigator.tsx
index 4364820..e815e48 100644
--- a/src/layouts/PageNavigator.tsx
+++ b/src/layouts/PageNavigator.tsx
@@ -68,7 +68,7 @@ export function PageNavigator() {
{/* 이전 페이지 */}