---
name: sms-scanner
description: SMS 스캔 기능 개발 및 디버깅. SMS 파싱, 구독 감지, Isolate 관련 이슈 시 사용.
allowed-tools: Read, Edit, Grep, Glob
---

# SMS Scanner

## 핵심 파일

| 파일 | 역할 |
|------|------|
| `lib/services/sms_scanner.dart` | SMS 파싱 로직 (Isolate) |
| `lib/controllers/sms_scan_controller.dart` | 스캔 플로우 제어 |
| `lib/screens/sms_scan_screen.dart` | UI |
| `lib/services/sms_scan/` | 보조 클래스 |

## Isolate 주의사항

`compute()` 내부에서 실행되는 함수는 별도 Isolate에서 실행됨.

**접근 불가 항목:**

- Flutter 바인딩 (`WidgetsBinding`)
- `BuildContext`
- `Provider`
- `navigatorKey`
- `AppLocalizations`

**올바른 패턴:**

```dart
// Isolate 내부 함수 (접두사: _iso)
String _isoExtractServiceName(String sender) {
  if (RegExp(r'^\d+$').hasMatch(sender)) {
    return 'Unknown service';  // 하드코딩 사용
  }
  return sender;
}
```

**잘못된 패턴:**

```dart
String _isoExtractServiceName(String sender) {
  // 오류: Isolate에서 Context 접근 불가
  return AppLocalizations.of(context).unknownService;
}
```

## 디버깅

```bash
# SMS 스캔 로그 확인
flutter logs | grep -i "sms\|scan\|isolate"
```

## 테스트 데이터

`lib/temp/test_sms_data.dart`에 테스트용 SMS 데이터 정의됨.
