🏷️ 이슈 유형
💡기능
분석 파이프라인 코드의 동작 변경 없이 내부 응집도를 개선한다.
폴더/기능 분리 자체는 이미 잘 되어 있으나(analysis · chat · infrastructure · core), 일부 파일 내부에 책임 과다·죽은 코드·타입 없는 딕셔너리·잔재 폴더가 남아 있어 가독성과 테스트 용이성을 떨어뜨린다.
이번 리팩토링으로 이를 한 번에 정리한다.
🛠️할 일 목록
- analyze_pipeline을 책임 단위 사적 메서드로 분해: _run_tracks()(텍스트/URL 병렬 실행·형제 task 취소), _run_rules(), _assess_track_availability(), _apply_confirmed_malicious_boost(), _assemble_success_response(), _build_failure_response()
- 분해 후 analyze_pipeline은 흐름 조립만 담당하도록 축소 (동작·반환값 불변)
- 미사용 메서드 scan_message_text 및 관련 죽은 경로 제거
- hybrid_url_result / rule_result 딕셔너리를 내부 결과 모델(@DataClass 또는 pydantic)로 승격하고 .get() 접근 정리
- 잔재 빈 폴더 4개(app/dto, app/router, app/service, app/utils) 제거
- 기존 테스트(tests/analysis/test_service.py 등) 무수정 통과로 행위 보존 확인, 커버리지 부족 구간엔 특성화(characterization) 테스트 보강
📌 참고 사항 / 제약 조건
- 행위 보존이 최우선. 입력→출력, 점수/등급, 예외 시 fail-safe(MEDIUM 폴백) 동작이 바뀌면 안 됨. 리팩토링과 기능 변경을 절대 섞지 않는다.
- 로깅/PII 불변식 유지. 원문 메시지·예외 메시지를 로그/응답에 남기지 않는 현재 규칙을 그대로 보존.
- 운영 핵심 경로(RabbitMQ consumer → analyze_pipeline)라 리스크가 큼 → 작은 커밋 단위로 쪼개고 각 커밋마다 테스트 그린 유지.
- 폴더 재배치형 대공사는 범위에서 제외(현 feature-first 구조 유지).
🏷️ 이슈 유형
feat: 새로운 기능 추가fix: 버그 수정refactor: 동작 변경 없는 구조 개선docs: README 등 문서 추가/수정chore: 설정, 빌드, 의존성 패키지 변경💡기능
분석 파이프라인 코드의 동작 변경 없이 내부 응집도를 개선한다.
폴더/기능 분리 자체는 이미 잘 되어 있으나(
analysis·chat·infrastructure·core), 일부 파일 내부에 책임 과다·죽은 코드·타입 없는 딕셔너리·잔재 폴더가 남아 있어 가독성과 테스트 용이성을 떨어뜨린다.이번 리팩토링으로 이를 한 번에 정리한다.
🛠️할 일 목록
📌 참고 사항 / 제약 조건