169 lines
5.5 KiB
Markdown
169 lines
5.5 KiB
Markdown
# .gemini/current.md
|
|
|
|
## TASK_META (수정 금지)
|
|
|
|
- TASK_TITLE: FSD 정착 2차 — 잔재 import 제거/중복 정리 + widgets public API 고정 + 분리작업 준비
|
|
- TASK_SLUG: fsd-settle-phase2-cleanup-and-public-api
|
|
|
|
## 작업 목표
|
|
|
|
1차 FSD 이관 이후 남아있는 “잔재(import/중복/브릿지)”를 정리하고,
|
|
페이지(app/\*)가 **widgets의 public API만** import 하도록 고정해
|
|
향후 기능/스타필드/UI 분리 작업을 안전하게 진행할 수 있는 상태로 만든다.
|
|
|
|
**중요:** 동작/디자인 변경 없이 리팩토링(정리/분리)만 수행한다.
|
|
|
|
---
|
|
|
|
## 0) 작업 순서(반드시 이 순서로)
|
|
|
|
1. 잔재 import 탐지 → 2) 잔재 제거/이관 → 3) 중복 소거(단일 소스) →
|
|
2. widgets public API(index.ts) 구축 → 5) 페이지 import를 widgets로 통일 →
|
|
3. 브릿지 파일 제거 → 7) 빌드 확인
|
|
|
|
---
|
|
|
|
# 1) 잔재(import) 탐지 및 제거(필수)
|
|
|
|
## 탐지(필수)
|
|
|
|
레포에서 아래 경로를 직접 참조하는 import가 남아있는지 모두 확인하고 제거한다:
|
|
|
|
- `components/*`
|
|
- `lib/*`
|
|
- `types/*` (가능하면)
|
|
- `features/*/ui/*` 를 page가 직접 import 하는 케이스(페이지는 widgets만)
|
|
|
|
> 탐지는 CLI에서 ripgrep을 사용하거나(권장), 코드 검색으로 동일하게 수행한다.
|
|
|
|
## 정리 규칙(필수)
|
|
|
|
- `components/*`를 직접 import하는 코드가 있다면:
|
|
- 해당 컴포넌트의 “정식 위치”(shared/ui, features/**/ui, widgets/**/ui)로 import를 바꾼다.
|
|
- `lib/*` import가 남아있다면:
|
|
- `shared/lib/**` 또는 `shared/config/**` 또는 `entities/**/model`/`features/**/model`로 교체한다.
|
|
- `types/*` import가 남아있다면:
|
|
- 가능 범위에서 `shared/types/**` 또는 도메인 model로 이동/교체한다.
|
|
- 단, 타입 대수술은 금지(경로 정리 중심).
|
|
|
|
---
|
|
|
|
# 2) 중복 구현 정리(필수)
|
|
|
|
## 대상(필수)
|
|
|
|
특히 아래 성격의 파일은 중복이 생기기 쉬우므로 “단일 소스”로 통일한다:
|
|
|
|
- `LobbyBackground` 계열
|
|
- `FlightBackground` 계열
|
|
- Star/Glint/Constellation 컴포넌트
|
|
- Starfield Canvas/Loop 관련 유틸
|
|
|
|
## 규칙(필수)
|
|
|
|
- 동일 기능이 두 위치에 존재하면, 하나를 “정식 소스”로 결정하고 나머지는 제거한다.
|
|
- 정식 소스 위치 우선순위:
|
|
1. widgets/\*\* (페이지에 꽂는 단위)
|
|
2. features/\*\* (기능 단위)
|
|
3. shared/\*\* (완전 범용)
|
|
- 제거가 리스크면 임시 re-export 브릿지를 1회만 허용하되,
|
|
이번 작업에서 최종적으로는 브릿지를 제거하는 방향을 우선한다.
|
|
|
|
---
|
|
|
|
# 3) Widgets Public API 고정(핵심)
|
|
|
|
## 목표(필수)
|
|
|
|
페이지(app/\*)는 앞으로 아래만 import 한다:
|
|
|
|
- `widgets/**` 의 `index.ts` (public API)
|
|
|
|
## 수행(필수)
|
|
|
|
- 각 widget 폴더에 `index.ts`를 만들고 public export를 한 곳으로 모은다.
|
|
예:
|
|
- `src/widgets/lobby-background/index.ts`
|
|
- `src/widgets/flight-background/index.ts`
|
|
- `src/widgets/flight-hud/index.ts`
|
|
- `src/widgets/lobby-routes/index.ts`
|
|
- page에서 `widgets/**/ui/*` 또는 `features/**/ui/*` 를 직접 import하는 코드를 전부 제거하고,
|
|
`widgets/**`의 index.ts에서만 가져오게 수정한다.
|
|
|
|
## 금지(필수)
|
|
|
|
- page에서 features/entities/shared를 직접 import하지 말 것(예외: 정말 공용 상수 1~2개 정도만, 가능하면 위젯이 먹도록 감춘다).
|
|
- widget 내부에서만 features/entities/shared를 조합한다.
|
|
|
|
---
|
|
|
|
# 4) 페이지(app/\*) 정리(필수)
|
|
|
|
## 목표(필수)
|
|
|
|
- `src/app/page.tsx` 및 `src/app/flight/page.tsx`는 “조합자” 역할만 한다:
|
|
- 위젯 렌더링 + 라우팅/레이아웃
|
|
- 별자리/스타필드/글린트/타이머 코어 로직은 페이지에서 제거되어야 한다(이미 분리되어 있다면 유지).
|
|
|
|
## 수행(필수)
|
|
|
|
- `app/page.tsx`는 `LobbyBackground`(widget)와 라우트/CTA만 남긴다.
|
|
- `app/flight/page.tsx`는 `FlightBackground` + `FlightHUD`(widget)만 남긴다.
|
|
|
|
---
|
|
|
|
# 5) 브릿지 파일 제거(필수)
|
|
|
|
## 목표
|
|
|
|
- 1차 이관에서 남겨둔 임시 re-export/브릿지 파일이 있다면 제거한다.
|
|
- `components/` 또는 `lib/` 폴더가 남아있다면:
|
|
- 비어있게 만들고 제거하거나,
|
|
- 최소한 “더 이상 import되지 않음” 상태로 만든다(최종적으로 삭제 권장).
|
|
|
|
---
|
|
|
|
# 6) 빌드/런타임 확인(필수)
|
|
|
|
- 타입 체크/빌드가 깨지지 않아야 한다.
|
|
- Home 로비 배경(별자리+glint) 정상 표시
|
|
- Flight 배경 스타필드 정상 표시
|
|
- 주요 라우트 이동(/, /boarding, /flight, /debrief, /log, /settings) 깨짐 없음
|
|
|
|
---
|
|
|
|
## Non-scope
|
|
|
|
- 기능 추가/변경 금지
|
|
- UI/애니메이션/스타필드 튜닝 금지(이번 작업은 구조 고정만)
|
|
- 라우트/디자인 변경 금지
|
|
- 스타일 값 조정 금지
|
|
|
|
---
|
|
|
|
## 적용 범위(예상)
|
|
|
|
- `src/app/page.tsx`
|
|
- `src/app/flight/page.tsx`
|
|
- `src/widgets/**` (index.ts 생성/수정)
|
|
- `src/features/**` (중복 제거/정식 소스 확정)
|
|
- `src/shared/**` (유틸/설정 경로 정리)
|
|
- 잔재 폴더(`components`, `lib`, `types`) 정리/삭제
|
|
|
|
---
|
|
|
|
## 완료 조건(AC)
|
|
|
|
- [ ] `components/*`, `lib/*`, `types/*` 직접 import가 레포에서 0이거나(최소화), 남아있다면 정당한 사유가 주석으로 명시됨
|
|
- [ ] 페이지(app/\*)는 widgets public API만 import한다(직접 features/ui 참조 없음)
|
|
- [ ] 각 widget은 index.ts(public API)를 가진다
|
|
- [ ] 중복 구현이 제거되어 단일 소스가 확정되었다
|
|
- [ ] 빌드/타입 에러 없이 동작이 유지된다
|
|
|
|
---
|
|
|
|
## 완료 후 출력(최소)
|
|
|
|
- 변경/생성/삭제된 파일 경로 목록
|
|
- AC 체크(OK/NO)
|