캠페인(sequences) 도메인 — 미사용 코드 전수조사
FE: admin/ knip 정적분석 · BE: elysia-server/ import 전수추적 · 2026-06-17
10
FE 미사용 파일
50+
FE 미사용 함수/상수
45
FE 미사용 타입
3
BE 미사용 파일
3
@deprecated 마커
⚠ 삭제 전 검증 필수. knip/grep 정적분석은 동적 import·문자열 참조·라우트 동적등록·조건부 렌더를 놓칠 수 있습니다.
아래는 "미사용 후보"이며, CLAUDE.md 규칙대로 제거 전 실제 참조를 확인해야 합니다. 특히 ⚑ 표시는 false-positive 의심 항목.
FE 미사용 파일 10개 (knip Unused files)
| 파일 | 비고 |
|---|---|
| components/sequences/ConfirmActivationModal.tsx | 활성화 확인 모달 — 대체된 듯 |
| components/sequences/proposal/blueprint/step-accordion/AddStepButton.tsx | 제안서 스텝 추가 버튼 |
| lib/api/hooks/campaign-proposals.ts | 캠페인 제안 hooks 세트 |
| lib/api/services/campaign-proposals.ts | 캠페인 제안 API 클라이언트 |
| pages/linkedin-sdr/components/CampaignDetailPanel.tsx | LinkedIn 캠페인 상세 패널 |
| pages/linkedin-sdr/components/CampaignStatusBadge.tsx | LinkedIn 상태 배지 (중복 — sequences에도 존재) |
| pages/sequences/CampaignScheduleBadge.tsx | 일정 배지 |
| pages/sequences/components/PostGenerationOverview.tsx | 생성 후 개요 |
| pages/sequences/SequencesMobileCardList.tsx ⚑ | 모바일 카드 리스트 — 반응형 조건부 렌더일 수 있음, 검증 필요 |
| pages/sequences/utils/sequence-metrics.ts | 메트릭 유틸 (BE 메트릭으로 대체 추정) |
FE 미사용 함수 / 상수 50+개 (knip Unused exports)
기능 그룹별 분류. sequence-proposal 계열은 barrel 재export·원본 양쪽이 잡힘 → 제안서 기능 미연결 의심.
| 제안서(Proposal) — barrel + 원본 양쪽 미사용 ⚑ | |
useSequenceProposalCancel/Delete/Rename/List | hooks/sequence-proposal.ts · proposal/mutations.ts · queries.ts |
useAddProposalChatMessage · useClearProposalChatMessages · useDeleteProposalChatMessage · useProposalChatMessages | hooks/sequence-proposal/queries.ts |
subscribeRefineStream | services/sequence-proposal.ts:138 |
| 벌크 / Enrollment | |
useBulkEnroll · useBulkUnenroll · useBulkUpdateSequenceStatus · useCreateEnrollment · useEnrollmentMetrics | hooks/sequences.ts (479·522·552·572·754) |
| 생성 / 개인화 / 미리보기 | |
useGenerateAISequence · usePersonalizedEmail · usePersonalizedEmailsStatus · usePreviewEmails | hooks/sequences.ts (776·866·969·1069) |
| 캠페인 템플릿 — 세트 전체 미사용 ⚑ | |
useCampaignTemplate · useCreateCampaignTemplateFromSequence · useUpdateCampaignTemplate · useDeleteCampaignTemplate · campaignTemplateKeys · campaignCalendarKeys | hooks/campaign-templates.ts · campaign-calendar.ts |
| 기타 조회 hooks | |
useCopySequence · useSequenceScheduleSummary · useSequenceLeads · useRecentSequences · useInboxCampaigns · useQueueSummary · useLinkedinSequenceRates · useCampaignSuggestions | hooks/sequences.ts · emails.ts · email-replies.ts · sequence-health.ts · linkedin-sdr.ts · assessment.ts |
| 컴포넌트 / 유틸 함수 | |
SequenceBulkDeleteDialog · StepTimelinePreview · stepAutosaveHash · groupByReadiness · beginActivationSession · classifyCommitError · comparePillState · getDefaultScheduledHour | pages/sequences/** · components/sequences/** |
| 상수 | |
MIN_STEP_COUNT · MAX_STEP_COUNT · SEQ_STATUS_TOOLTIP_KEYS · CAMPAIGN_STATUS_COLORS · GOAL_BORDER · REFINE_LIMIT_PER_MINUTE · PRESET_STRATEGY_SEQUENCES · SEQUENCE_OPTIONS | lib/constants/sequence.ts · sequences/i18n-keys.ts · settings/email-templates/constants.ts |
FE 미사용 타입 45개 (knip Unused types)
sequence-proposal.ts(Diagnosis*/Blueprint*) 와 sequence.ts 다수. 제안서 타입군이 대거 미사용 → 위 함수 미사용과 일관.
DiagnosisTopCountry/TopBusinessType/Target/Benchmark/Assets/RecentSequence/SelfHistory/Account/GroupAnalysisBlueprintRecommended/UsedAssets/RationaleRefineRequest/RefineStreamEvent/RefineStreamRequest·StepChange/ChangesSummary/SampleLeadEmailBounceType·EnrollmentStopReason·StepExecutionStatus·GenerationSourceReplyAutomationAction·SequenceStepAttachment·SequenceStepSignatureMode·SequenceStepExecutionBulkUnenrollRequest·BulkEnrollWithSchedulingRequest·EnrollmentWithDetails·NodeStatisticsSequenceCategoryCounts·CampaignStatusIcon·ActivationProgressStatus·SignatureMode·SavedEmailStepReadinessTier/ReadinessStep·SequenceData·SesStatsBucket·SequenceModalPayload·LeadCampaignEvent
BE 미사용 파일 / 함수 import 전수추적
| 대상 | 경로:줄 | 근거 / 비고 |
|---|---|---|
sequence-step-reschedule.service.ts (파일) | services/sequence-step-reschedule.service.ts | import 0건. rescheduleSequenceSteps() 등 어디서도 호출 안 됨 |
stopEnrollmentForLead() | services/sequences/stop-enrollment-for-lead.ts:27 | 호출 0건. FF_AGENT_ENRICHMENT 경로용 문서화됐으나 미연결 |
wakeAwaitingEnrichment() | services/sequences/wake-awaiting-enrichment.ts:32 | 호출 0건. lead-on-demand-enrich 워커 콜백용이나 미연결 |
DEPRECATED @deprecated · 레거시 마커 BE schema/service
| 심볼 | 경로:줄 | 내용 |
|---|---|---|
memo 컬럼 | db/schema/sequences.ts:116 | @deprecated 2026-06 캠페인 메모 제거. 읽기·쓰기 중단, 데이터 보존 위해 컬럼 유지 → 추후 DROP 마이그레이션 예정 |
scheduled enum 값 | db/schema/sequences.ts:94 | Deprecated — processing 으로 대체 (하위호환 유지) |
signatureMode 레거시 값 | db/schema/sequences.ts:191 | user_default·specific·legacy_embedded DB 잔존 → 서비스에서 normalizeSignatureMode() 정규화 (embedded|none 으로 통합) |
FE: CampaignStatusBadge.tsx · components/constants.ts 에도 @deprecated 마커 존재 | ||
BE 중복 / 대체 레거시 마이그레이션 진행 중
| 구버전 (legacy) | 신버전 | 상태 |
|---|---|---|
listSequences() — OFFSETsequence-query.service.ts:74 | listSequencesWithFilters() / listSequencesPaged() — cursor keysetsequence-query.service.ts:173·111 | 라우트 573에서 아직 호출. "OFFSET 금지" 규칙상 deprecate 예정 — 점진 마이그레이션 |
권장 정리 순서. ① BE 미사용 파일 3개(완전 고립, 가장 안전) → ② FE 미사용 파일 중 ⚑ 아닌 것 → ③ FE 미사용 함수/타입(barrel 동시 제거) → ④ @deprecated는 DROP 마이그레이션과 함께 별도 처리. ⚑ 항목(
SequencesMobileCardList, 제안서·캠페인템플릿 세트)은 기능 자체가 미연결인지 먼저 확인 후 일괄 판단.