Skip to content

refactor: 프론트 잔여 미사용 export 7건 제거 + 감사 로그 타입 중복 통합 - #252

Merged
k002bill2 merged 2 commits into
mainfrom
refactor/frontend-remaining-exports
Aug 9, 2026
Merged

refactor: 프론트 잔여 미사용 export 7건 제거 + 감사 로그 타입 중복 통합#252
k002bill2 merged 2 commits into
mainfrom
refactor/frontend-remaining-exports

Conversation

@k002bill2

Copy link
Copy Markdown
Owner

요약

#249에서 남겨둔 잔여 8건 중 7건을 정리하고, 별건으로 보고했던 감사 로그 타입 중복
정의를 통합합니다. 두 커밋으로 분리했습니다.

knip Unused exports 8 → 1.

커밋 1 — 잔여 미사용 export 7건 (e1e3db7)

앞선 5배치와 달리 기계적 처리가 불가능해 세 갈래로 나눠 개별 확인했습니다.

갈래 대상 처리
이름 단위 편집 components/git/index.ts MergeRequestCard 재노출만 제거. 같은 줄의 MergeRequestListGitPage.tsx:22,429에서 사용 중이라 유지
멀티라인 재노출 stores/orchestration/index.ts RECONNECT_CONFIG·calculateBackoff·transformTask·handleMessage 제거. PROVIDER_CONFIG·identifyProvider는 유지
셀렉터 + 테스트 stores/feedback.ts useFeedbackCount·usePendingCount·usePositiveRate 제거. usePendingFeedbackCount는 사용 중이라 유지

orchestration/index.ts는 barrel이 아니라 500줄짜리 Zustand 스토어 구현체라,
제거 전 파일 내부 사용 여부를 먼저 확인했습니다(각 1회 = 재노출 줄에만 등장).

삭제한 테스트 7개에 대해: 이 테스트들은 프로덕션 export를 호출하지 않았습니다.
주석에 명시된 대로 같은 로직을 복제한 함수(feedbackCountSelector 등)를 검증하던
것이라, 원본을 제거하면 미러링 대상이 사라집니다. 복제본을 테스트하고 있었으므로
feedback.ts의 셀렉터 라인은 애초에 커버되지 않았습니다.

커밋 2 — 감사 로그 타입 중복 통합 (5b6a51e)

AuditLogTable.tsxstores/audit.ts가 같은 API 응답을 각각 타이핑하고 있었습니다.

타입 상태
AuditLogEntry 18줄 완전 동일
AuditLogFilter 스토어에만 include_global — 컴포넌트 쪽이 부분집합

부분집합이라는 게 문제입니다. 한쪽에만 필드를 추가해도 컴파일이 통과하므로
소리 없이 어긋납니다. 단일 출처를 stores/audit로 정하고 컴포넌트와 테스트가
그곳에서 import하도록 바꿨습니다. 재노출은 두지 않았습니다 — 두면 중복 구조가
그대로 남습니다.

검증

게이트 커밋 1 커밋 2
tsc --noEmit exit 0 exit 0
eslint exit 0 exit 0
vitest run 4365 → 4358 (제거한 7개만큼) 4358 (리팩터라 불변)
vite build 성공 성공
Codex 리뷰 지적 0건 — "dead tests" 판정 일치 지적 0건

로컬 npm run knip은 개발 머신의 ~/tsconfig.json(Expo 잔재) 때문에 실행되지
않습니다. CI Frontend Knip으로 확인합니다.

남는 것

knip Unused exports 1건 — components/git/index.ts의 잔여 항목은 없고,
Unused exported types 78건은 정리하지 않기를 권고합니다: TS 타입은 컴파일 시
소거되어 출력 변화가 0이고, 게이트 대상도 아니며, FastAPI↔React 계약 타입이라
integration-qa의 대조 근거로 쓰입니다.

테스트 계획

  • tsc / eslint / vitest / build (커밋별)
  • Codex 외부 리뷰 2회
  • CI 8개 job 통과 확인 (Frontend Knip 포함)

🤖 Generated with Claude Code

https://claude.ai/code/session_017UEJENahpFQRnU6aYKkH7V

k002bill2 and others added 2 commits August 10, 2026 01:06
knip 잔여 8건 중 7건을 정리한다. 세 갈래 모두 기계적 처리가 불가능해
개별 확인 후 진행했다.

이름 단위 편집:
- components/git/index.ts — `MergeRequestCard` 재노출만 제거.
  같은 줄의 `MergeRequestList` 는 GitPage.tsx 가 사용 중이라 유지하고,
  `MergeRequestCard` 는 테스트가 barrel 이 아닌 '../MergeRequestCard' 로
  직접 import 하므로 컴포넌트 자체는 남긴다

멀티라인 재노출:
- stores/orchestration/index.ts — `RECONNECT_CONFIG`, `calculateBackoff`,
  `transformTask`, `handleMessage` 제거. 이 파일은 barrel 이 아니라 스토어
  구현체이므로 파일 내부 사용 여부를 먼저 확인했다(각 1회 = 재노출 줄에만 등장).
  `PROVIDER_CONFIG`·`identifyProvider` 는 사용 중이라 유지

셀렉터 + 대응 테스트:
- stores/feedback.ts — `useFeedbackCount`, `usePendingCount`, `usePositiveRate`
  제거. `usePendingFeedbackCount` 는 사용 중이라 유지
- stores/__tests__/feedback.test.ts — 위 3종의 테스트 7개와 복제 셀렉터 3개 제거.
  이 테스트들은 프로덕션 export 를 호출하지 않고 같은 로직을 복제해 검증하던
  것이라(주석에 "mirroring" 명시) 원본 제거로 미러링 대상을 잃는다

검증: tsc / eslint exit 0, vitest 4365 → 4358 (제거한 7개만큼 감소),
vite build 성공. Codex 리뷰 지적 0건.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017UEJENahpFQRnU6aYKkH7V
AuditLogTable.tsx 와 stores/audit.ts 가 같은 API 응답을 각각 타이핑하고
있었다. AuditLogEntry 는 18줄이 완전히 동일했고, AuditLogFilter 는 스토어에만
`include_global` 이 있는 상태로 갈려 있었다 — 컴포넌트 쪽이 부분집합이라
필드 추가가 한쪽에만 반영돼도 컴파일은 통과한다.

- AuditLogTable.tsx: 로컬 AuditLogEntry·AuditLogFilter 정의 제거,
  `@/stores/audit` 에서 import. AuditLogResponse 는 스토어에 없으므로 유지
- __tests__/AuditLogTable.test.tsx: import 출처를 `@/stores/audit` 로 변경
  (재노출을 두면 중복 구조가 그대로 남는다)

스토어의 AuditLogFilter 가 상위집합이라 `useState<AuditLogFilter>({})` 는
그대로 동작한다. knip 이 unused exported type 으로 잡던 스토어의 두 타입도
실제 소비처가 생긴다.

검증: tsc / eslint exit 0, vitest 4358 통과(리팩터라 개수 불변),
vite build 성공. Codex 리뷰 지적 0건.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017UEJENahpFQRnU6aYKkH7V
@k002bill2
k002bill2 merged commit e140d6d into main Aug 9, 2026
9 checks passed
@k002bill2
k002bill2 deleted the refactor/frontend-remaining-exports branch August 9, 2026 16:21
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.

1 participant