### 📝 기능 설명 사용자가 CreateSecret 화면에서 값을 입력하면, 서비스 후보와 파싱 메타데이터를 추정해 chip과 폼 자동 채움에 사용한다. ### ✅ 작업 목록 ## Phase A — 골격 + detector 3개 - [ ] `Detection/Model/` 5개 타입: `DetectionResult` · `ServiceCandidate` · `DetectionConfidence` · `DetectedMetadata` · `SubDetection` - [ ] `Detection/Rule/` 4개 struct: `PrefixRule` · `RegexRule` · `PEMHeaderRule` · `DatabaseSchemeRule` - [ ] `Detection/Security/`: `SensitiveString` + `SensitiveBox` (deinit zero-fill) - [ ] `Repository/Interface/SecretPatternRepository.swift` protocol - [ ] `Detection/Rule/BundledSecretPatternRepository.swift` (stub, 빈 배열) - [ ] `Detection/Detector/`: `SecretDetector` · `DetectorContext` protocol - [ ] `UseCase/Interface/Secret/DetectSecretUseCase.swift` protocol - [ ] `UseCase/Impl/Secret/DetectSecretUseCaseImpl.swift` (파이프라인 골격 + `DetectorContext` 채택) - [ ] `PrefixRegexDetector` (최소 rule 3~5개만) - [ ] `PEMDetector` - [ ] `DatabaseURLDetector` - [ ] `Detection/Support/`: `InputNormalizer` (trim + 64KB truncate) · `Base64URL`(비어둠) - [ ] Unit test 각 detector + `DetectSecretUseCaseImplGoldenTests` 5 케이스 - [ ] `DetectionFixture.swift` (테스트용 `SensitiveString.testing(_:)` 팩토리) - [ ] DVDomain 빌드 · 테스트 그린 ## Phase B — 나머지 detector + Rule 완비 - [ ] `EnvSetDetector` (재귀 감지) - [ ] `JSONCredentialDetector` (GCP · Firebase · Google OAuth · AWS · Generic) - [ ] `JWTDetector` + `Base64URL` 유틸 완성 - [ ] `BuiltInPrefixRules` 전량 (~60 rule) — AI/Payments/DevOps/Cloud/Communication/Monitoring/SaaS 서브네임스페이스 - [ ] `BuiltInRegexRules` (Twilio · Mailchimp · Telegram · Discord · Sentry) - [ ] `BuiltInPEMHeaders` 8개 - [ ] `BuiltInDatabaseSchemes` 12개 + Neon/Supabase host 후보 규칙 - [ ] Azure 3종 (Storage · Service Bus · SQL) — `DatabaseURLDetector`에 fallback - [ ] 골든 테이블 30~50 케이스 (스펙 §1~6 커버) ## 완료 기준 - [ ] `DetectSecretUseCase.execute(value: SensitiveString(...))` 로 스펙 문서 예시가 모두 감지됨 - [ ] Raw 값이 `DetectionResult` 어디에도 담기지 않음 (타입으로 보장) - [ ] Detector 파일에서 `os_log` / `Logger` / `print` 사용 0건 (PR 리뷰 게이트) ### 🔗 참고 링크 SECRET_DETECTION_PATTERNS.md
📝 기능 설명
사용자가 CreateSecret 화면에서 값을 입력하면, 서비스 후보와 파싱 메타데이터를 추정해 chip과 폼 자동 채움에 사용한다.
✅ 작업 목록
Phase A — 골격 + detector 3개
Detection/Model/5개 타입:DetectionResult·ServiceCandidate·DetectionConfidence·DetectedMetadata·SubDetectionDetection/Rule/4개 struct:PrefixRule·RegexRule·PEMHeaderRule·DatabaseSchemeRuleDetection/Security/:SensitiveString+SensitiveBox(deinit zero-fill)Repository/Interface/SecretPatternRepository.swiftprotocolDetection/Rule/BundledSecretPatternRepository.swift(stub, 빈 배열)Detection/Detector/:SecretDetector·DetectorContextprotocolUseCase/Interface/Secret/DetectSecretUseCase.swiftprotocolUseCase/Impl/Secret/DetectSecretUseCaseImpl.swift(파이프라인 골격 +DetectorContext채택)PrefixRegexDetector(최소 rule 3~5개만)PEMDetectorDatabaseURLDetectorDetection/Support/:InputNormalizer(trim + 64KB truncate) ·Base64URL(비어둠)DetectSecretUseCaseImplGoldenTests5 케이스DetectionFixture.swift(테스트용SensitiveString.testing(_:)팩토리)Phase B — 나머지 detector + Rule 완비
EnvSetDetector(재귀 감지)JSONCredentialDetector(GCP · Firebase · Google OAuth · AWS · Generic)JWTDetector+Base64URL유틸 완성BuiltInPrefixRules전량 (~60 rule) — AI/Payments/DevOps/Cloud/Communication/Monitoring/SaaS 서브네임스페이스BuiltInRegexRules(Twilio · Mailchimp · Telegram · Discord · Sentry)BuiltInPEMHeaders8개BuiltInDatabaseSchemes12개 + Neon/Supabase host 후보 규칙DatabaseURLDetector에 fallback50 케이스 (스펙 §16 커버)완료 기준
DetectSecretUseCase.execute(value: SensitiveString(...))로 스펙 문서 예시가 모두 감지됨DetectionResult어디에도 담기지 않음 (타입으로 보장)os_log/Logger/print사용 0건 (PR 리뷰 게이트)🔗 참고 링크
SECRET_DETECTION_PATTERNS.md