📝 기능 설명
CreateSecretFeature의 detectedServices / serviceCandidates state가 이미 존재하고 View에서도 소비하고 있지만, 감지 엔진이 wiring되지 않아 동작하지 않는 상태다. DetectionClient를 신설하고 실제 DetectSecretUseCaseImpl까지 연결한다.
DetectSecretUseCase.execute는 동기 순수 함수이므로 async/throws 없이 간단히 래핑한다.
✅ 작업 목록
DetectionClient.swift 신설 (DVPresentation/Dependencies)
DetectionClient+Live.swift 신설 (Devault/Composition/Dependencies)
CreateSecretFeature 감지 wiring
| content case |
감지 트리거 필드 |
.apiKeyToken |
f.value |
.database |
f.linkString |
.sshKey |
f.privateKey |
.sslTlsCertificate |
f.certificate |
.serviceAccount |
f.credentialJSON |
.envSet |
f.envContent |
| 나머지 |
감지 불필요 |
SecretMetaFields detection 헬퍼
🔗 참고 링크
docs/PLAN_CreateSecret_Live.md — Step 3, 4, 5
📝 기능 설명
CreateSecretFeature의detectedServices/serviceCandidatesstate가 이미 존재하고 View에서도 소비하고 있지만, 감지 엔진이 wiring되지 않아 동작하지 않는 상태다.DetectionClient를 신설하고 실제DetectSecretUseCaseImpl까지 연결한다.DetectSecretUseCase.execute는 동기 순수 함수이므로 async/throws 없이 간단히 래핑한다.✅ 작업 목록
DetectionClient.swift 신설 (
DVPresentation/Dependencies)@DependencyClient매크로,detect: @Sendable (_ value: SensitiveString) -> DetectionResulttestValue,previewValue(.none반환) 추가DependencyValuesextension 추가DetectionClient+Live.swift 신설 (
Devault/Composition/Dependencies)DetectSecretUseCaseImpl()기본 init으로 래핑 (LiveStorage 참조 불필요)CreateSecretFeature 감지 wiring
@Dependency(\.detectionClient) var detectionClient추가.bindingcatch-all에서primaryDetectionValue/primaryDetectionFieldID기반으로 감지 호출serviceCandidates/detectedServices갱신 (content case별 primary 필드 자동 추출).apiKeyTokenf.value.databasef.linkString.sshKeyf.privateKey.sslTlsCertificatef.certificate.serviceAccountf.credentialJSON.envSetf.envContentSecretMetaFields detection 헬퍼
primaryDetectionValuecomputed property 추가primaryDetectionFieldIDcomputed property 추가🔗 참고 링크
docs/PLAN_CreateSecret_Live.md— Step 3, 4, 5