Skip to content

Comments

refactor: feature-based 구조로 전환 (Phase 1-2)#150

Merged
leeleeleeleejun merged 4 commits intodevelop-v1from
refactor/#148
Feb 22, 2026
Merged

refactor: feature-based 구조로 전환 (Phase 1-2)#150
leeleeleeleejun merged 4 commits intodevelop-v1from
refactor/#148

Conversation

@leeleeleeleejun
Copy link
Member

Summary

  • Layer-based 구조에서 feature-based 구조로 전환 (Phase 1-2)
  • 모든 기능을 src/features/로 마이그레이션 완료
  • 빌드 검증 완료 및 기능 정상 동작 확인

변경사항

Phase 1: 코드 정리 및 개선

  • ✅ AGENTS.md 생성 (AI 에이전트용 종합 개발 가이드 242줄)
  • ✅ logger.ts 유틸리티 생성 및 console.log 교체 (8개 파일)
  • ✅ 66줄의 주석 처리된 폰트 코드 제거
  • ✅ 오타 수정 (PostDetail/utiils → utils)

Phase 2 Part 1: auth + user 마이그레이션

  • ✅ auth 기능: LoginPage, LoginLoadingPage, getKakaoInga API
  • ✅ user 기능: MyProfilePage, UsageHistoryPage, userSlice, MenuItem 컴포넌트

Phase 2 Part 2: post + chat + home 마이그레이션

  • ✅ post 기능: CreatePostPage (6개 하위 페이지), PostDetailPage, 관련 컴포넌트/utils/types/constants
  • ✅ chat 기능: ChatRoomPage, ChatRoomListPage, 관련 컴포넌트/utils
  • ✅ home 기능: HomePage, Map, PostList, SearchBar, 관련 hooks

전역 import 경로 업데이트

  • ✅ Router.tsx: 모든 페이지를 features에서 lazy import
  • ✅ store/index.ts: userSlice, homeMapSlice import 경로 수정
  • ✅ App.tsx, baseApi.ts: setIsLogin import 경로 수정

디렉토리 구조

src/
├── features/
│   ├── auth/           # Login, authentication
│   │   ├── LoginPage.tsx
│   │   ├── LoginLoadingPage.tsx
│   │   ├── api/
│   │   └── index.ts
│   ├── user/           # User profile, usage history
│   │   ├── MyProfilePage.tsx
│   │   ├── UsageHistoryPage.tsx
│   │   ├── userSlice.ts
│   │   ├── components/
│   │   └── index.ts
│   ├── post/           # Post creation, detail, list
│   │   ├── CreatePostPage.tsx
│   │   ├── PostDetailPage.tsx
│   │   ├── (6개 하위 페이지)
│   │   ├── components/
│   │   ├── utils/
│   │   ├── types/
│   │   ├── constants/
│   │   └── index.ts
│   ├── chat/           # Chat rooms and messages
│   │   ├── ChatRoomPage.tsx
│   │   ├── ChatRoomListPage.tsx
│   │   ├── components/
│   │   ├── utils/
│   │   └── index.ts
│   └── home/           # Home page with map
│       ├── HomePage.tsx
│       ├── components/ (Map, PostList, SearchBar, etc.)
│       ├── hooks/
│       └── index.ts
└── (기타 기존 디렉토리)

통계

  • 총 3개 커밋: Phase 1 + Phase 2 Part 1 + Phase 2 Part 2
  • Phase 1: 10개 파일 변경 (345 insertions, 111 deletions)
  • Phase 2 Part 1: 19개 파일 변경 (413 insertions, 7 deletions)
  • Phase 2 Part 2: 78개 파일 변경 (2945 insertions, 6 deletions)
  • 빌드 검증: 모든 단계에서 빌드 성공 (3.39s ~ 3.51s)
  • 번들 크기: 495.01~495.03 kB (기존과 동일)

리뷰 포인트

  1. Named exports 사용: 각 feature의 index.ts에서 named exports 제공
  2. Import 경로 일관성: 모든 전역 참조가 features로 업데이트됨
  3. 타입 안전성: TypeScript strict mode 유지, 빌드 에러 없음
  4. 기능 보존: 코드 로직 변경 없이 구조만 변경

후속 작업 (별도 PR 예정)

  • Phase 3: 구 디렉토리 정리 (domains/, pages/ 삭제)
  • Phase 4: 중복 컴포넌트 통합 (SearchBar 2개, Map 3개)
  • Phase 5: 큰 컴포넌트 분리
  • Phase 6: 타입 시스템 개선
  • Phase 7: 스타일링 일관성 개선
  • Phase 8: API 레이어 개선
  • Phase 9: 에러 핸들링 및 로깅 강화

- GlobalStyle.ts에서 주석 처리된 폰트 코드 66줄 제거
- PostDetail/utiils 폴더명 오타 수정 -> utils로 변경
- console.log/error를 logger 유틸리티로 교체 (개발 환경 전용)
- 주석 처리된 코드 제거 (HomePage onClick)
- 새로운 logger 유틸리티 추가 (src/utils/logger.ts)
- AGENTS.md 문서 추가 (AI 코딩 에이전트용 가이드)
- 빌드 검증 완료

영향받은 파일:
- 8개 파일에서 console을 logger로 교체
- 4개 utils 파일 경로 수정
- 코드 라인 수 약 100줄 감소
- features/ 디렉토리 구조 생성
- auth 기능 마이그레이션
  * pages/Login → features/auth/LoginPage.tsx
  * pages/Login/LoginLoadingPage → features/auth/LoginLoadingPage.tsx
  * domains/Login/api/getKakaoInga → features/auth/api/getKakaoInga.ts
  * features/auth/index.ts 추가 (named exports)

- user 기능 마이그레이션
  * pages/MyProfile → features/user/MyProfilePage.tsx
  * pages/UsageHistory → features/user/UsageHistoryPage.tsx
  * domains/MyProfile/Slice/userSlice → features/user/userSlice.ts
  * domains/MyProfile/components/MenuItem → features/user/components/MenuItem.tsx
  * features/user/index.ts 추가 (named exports)

- 전역 import 경로 업데이트
  * Router.tsx: 새 feature 경로로 lazy import 수정
  * App.tsx, api/baseApi.ts, store/index.ts: userSlice import 경로 업데이트

- 빌드 검증 완료 (3.39s, 번들 크기 495.01 kB)

다음 단계: post, chat, home 기능 마이그레이션 예정
…그레이션

- post 기능 마이그레이션
  * pages/CreatePost → features/post/CreatePostPage.tsx + 하위 페이지들
  * pages/PostDetail → features/post/PostDetailPage.tsx
  * domains/PostDetail/components → features/post/components/
  * domains/PostDetail/utils → features/post/utils/
  * domains/PostDetail/types → features/post/types/postDetail.types.ts
  * domains/PostDetail/constants → features/post/constants/postDetail.constants.ts
  * features/post/index.ts 추가 (named exports)

- chat 기능 마이그레이션
  * pages/ChatRoom → features/chat/ChatRoomPage.tsx
  * pages/ChatRoomList → features/chat/ChatRoomListPage.tsx
  * domains/ChatRoom/components → features/chat/components/
  * domains/ChatRoom/utils → features/chat/utils/
  * domains/ChatRoomList/components → features/chat/components/
  * features/chat/index.ts 추가 (named exports)

- home 기능 마이그레이션
  * pages/Home → features/home/HomePage.tsx
  * domains/Home/components → features/home/components/
  * domains/Home/hooks → features/home/hooks/
  * features/home/index.ts 추가 (homeMapSlice export 포함)

- 전역 import 경로 업데이트
  * Router.tsx: 모든 feature 경로로 lazy import 수정
  * store/index.ts: homeMapSlice import 경로 업데이트

- 빌드 검증 완료 (3.51s, 번들 크기: CreatePost 495KB, Home 307KB)

다음 단계: 구 domains/, pages/ 디렉토리 삭제 예정
@leeleeleeleejun leeleeleeleejun linked an issue Feb 22, 2026 that may be closed by this pull request
1 task
@leeleeleeleejun leeleeleeleejun merged commit 264a3ef into develop-v1 Feb 22, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Refactor] 디렉터리 및 파일 구조 변경

1 participant