아키텍처 규칙 검증
프로젝트의 Clean Architecture 규칙 준수 여부를 전체 코드베이스 대상으로 검증합니다.
실행 절차
1단계: 의존 방향 검증 (core → infra)
src/core/ 디렉토리의 모든 .py 파일에서 다음 패턴을 검색합니다:
위반 패턴 (있으면 안 됨):
from src.infra또는import src.infrafrom src.utils또는import src.utils(core는 utils에도 의존하지 않아야 함)from src.backtest또는import src.backtest
허용 패턴:
from src.core또는import src.core(core 내부 참조는 허용)- 표준 라이브러리 및 외부 패키지 (pandas, typing, abc 등)
2단계: 인터페이스 구현 검증
src/core/interfaces.py에서 추상 클래스(ABC) 목록을 추출합니다:IDataProviderIBrokerAdapterINotifier
각 인터페이스에 정의된
@abstractmethod목록을 추출합니다src/infra/디렉토리에서 해당 인터페이스를 구현하는 클래스를 찾습니다:- 클래스 정의에서 인터페이스를 상속하는지 확인
- 모든 추상 메서드가 구현되었는지 확인
src/backtest/디렉토리에서도 인터페이스 구현 클래스를 확인합니다
3단계: 백테스트 재사용 검증
src/backtest/ 디렉토리의 파일을 분석하여:
core 로직 직접 재사용 확인: 다음 클래스들을 import하여 사용하는지 확인
RegimeAnalyzerVolatilityTargeterRebalancerIndicatorCalculator
코드 분기 없음 확인: 백테스트 전용 로직이 core에 포함되어 있지 않은지 확인
src/core/파일에서backtest,is_backtest,test_mode등의 패턴 검색- 이런 분기가 있으면 위반
4단계: 순환 의존성 검증
모듈 간 import를 추적하여 순환 참조가 없는지 확인합니다:
src/core/→ 외부 의존 없어야 함src/infra/→src/core/만 의존 가능src/utils/→src/core/만 의존 가능 (또는 독립)src/backtest/→src/core/,src/infra/,src/utils/의존 가능
결과 출력 형식
## 아키텍처 검증 결과
### 요약
- 검증 항목: 4개
- 통과: N개
- 위반: N개
### 1. 의존 방향 (core → infra)
✅ 통과 / ❌ 위반
- [위반 시] 파일명:라인번호 - `from src.infra.xxx import yyy`
### 2. 인터페이스 구현
✅ 통과 / ❌ 위반
- IDataProvider: 구현체 [YFinanceLoader, BacktestDataLoader]
- fetch_ohlcv: ✅ 구현됨
- fetch_vix: ✅ 구현됨
- IBrokerAdapter: 구현체 [MockBroker, KisBroker, BacktestBroker]
- get_portfolio: ✅ 구현됨
- execute_orders: ✅ 구현됨
- fetch_current_prices: ✅ 구현됨
- INotifier: 구현체 [SlackNotifier, TelegramNotifier]
- send_message: ✅ 구현됨
- send_alert: ✅ 구현됨
### 3. 백테스트 재사용
✅ 통과 / ❌ 위반
- core 로직 재사용: RegimeAnalyzer ✅, VolatilityTargeter ✅, Rebalancer ✅
- core 코드 분기: 없음 ✅
### 4. 순환 의존성
✅ 통과 / ❌ 위반
- [위반 시] moduleA → moduleB → moduleA 순환 경로 표시
주의사항
- 이 스킬은 읽기 전용입니다. 코드를 직접 수정하지 않습니다.
- 위반 사항 발견 시 수정 방향을 제안하고 사용자가 결정하도록 합니다.
__init__.py의 re-export는 위반으로 간주하지 않습니다.