## 📜 Overview (Required) <!-- 이슈에 대해 간략하게 설명해주세요 --> 수신자 등록에서 **연락처 형식 검증과 중복 검사가 모두 없다** (2026-07-28 16:12 에뮬 런타임 실측). **1) 전화번호 자리에 문자를 넣어도 등록된다** - 이름 `Invalid Phone`, 연락처 `abc123`, 관계 `아들` 로 입력 → **"등록" 버튼이 활성 상태**이고, 누르면 그대로 저장된다 ``` POST /api/v1/users/receivers <-- 200 … {"receiverId":12,"name":"Invalid Phone","relation":"아들", …} ``` 정상 번호를 넣으면 `010-1234-5678` 로 포맷되는데, 문자는 걸러지지 않고 원문 그대로 들어간다. 잘못된 연락처가 저장되면 이후 안내 발송 경로에서 실패한다. **2) 같은 연락처를 다시 등록해도 막히지 않는다** ``` POST /api/v1/users/receivers {"name":"Invalid Phone Dup","phone":"abc123", …} <-- 200 … {"receiverId":13, …} ← 같은 번호로 또 생성됨 ``` 중복 경고 없이 수신자가 하나 더 늘어난다. **수정 방향**: 입력 시점에 전화번호 형식을 검증해 형식이 맞지 않으면 등록을 막고 안내한다. 이미 등록된 번호면 중복임을 알린다. ## 📌 Child Issue(Optional) <!-- 자식 이슈를 연결해주세요(ex: - #32) --> No response ## 📍 Note (Optional) <!-- 특이사항을 적어주세요 --> - 서버도 두 경우 모두 200 으로 받습니다 — BE 레포에 별도로 올렸습니다. - 이메일은 비워 두어도 등록됩니다(선택값인지 확인 필요). - 노션 [QA 문서](https://app.notion.com/p/QA-2fb0982937878052ad7cd4926bf1b5a5) 의 수신자 등록 › 유효성/중복 항목과 같은 내용이지만, 그 문서는 최종 편집 2026-04-16 이라 참고로만 적습니다. 이 이슈의 근거는 위 런타임 실측입니다.
Activity
1hyok commentedon Aug 2, 2026
원인 지점을 짚어 둔다.
ReceiverRegisterViewModel이 공백 여부만 보고 그대로 넘긴다.```kotlin
// ReceiverRegisterViewModel.kt:39-40
phone = phone?.takeIf { it.isNotBlank() },
email = email?.takeIf { it.isNotBlank() },
```
형식 검증도, 기존 목록과의 중복 검사도 없다.
abc123이 그대로 통과해 저장되는 것이 이것 때문이다. 중복 검사는userRepository.receiverListFlow로 이미 목록을 들고 있어 클라 단에서도 가능하다.[-]fix(setting): 수신자 등록에 연락처 형식 검증·중복 검사 부재 — 문자열도 그대로 저장[/-][+]수신자 등록에 연락처 형식 검증·중복 검사 부재 — 문자열도 그대로 저장[/+]fix(setting): 수신인 입력 검증 및 오류 처리 개선 (#577)