Skip to content

수신자 등록에 연락처 형식 검증·중복 검사 부재 — 문자열도 그대로 저장 #577

Closed

Description

@1hyok

📜 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)

No response

📍 Note (Optional)

  • 서버도 두 경우 모두 200 으로 받습니다 — BE 레포에 별도로 올렸습니다.
  • 이메일은 비워 두어도 등록됩니다(선택값인지 확인 필요).
  • 노션 QA 문서 의 수신자 등록 › 유효성/중복 항목과 같은 내용이지만, 그 문서는 최종 편집 2026-04-16 이라 참고로만 적습니다. 이 이슈의 근거는 위 런타임 실측입니다.

Activity

  1. added theissue type on Jul 29, 2026
  2. 1hyok commented on Aug 2, 2026

    @1hyok
    CollaboratorAuthor

    원인 지점을 짚어 둔다.

    ReceiverRegisterViewModel 이 공백 여부만 보고 그대로 넘긴다.

    ```kotlin
    // ReceiverRegisterViewModel.kt:39-40
    phone = phone?.takeIf { it.isNotBlank() },
    email = email?.takeIf { it.isNotBlank() },
    ```

    형식 검증도, 기존 목록과의 중복 검사도 없다. abc123 이 그대로 통과해 저장되는 것이 이것 때문이다. 중복 검사는 userRepository.receiverListFlow 로 이미 목록을 들고 있어 클라 단에서도 가능하다.

  3. changed the title [-]fix(setting): 수신자 등록에 연락처 형식 검증·중복 검사 부재 — 문자열도 그대로 저장[/-] [+]수신자 등록에 연락처 형식 검증·중복 검사 부재 — 문자열도 그대로 저장[/+] on Aug 28, 2026
  4. added
    pr-open이 이슈를 구현하는 PR 이 열려 있다 — base 가 기본 브랜치가 아니어도 드러낸다
    on Aug 29, 2026
  5. removed
    pr-open이 이슈를 구현하는 PR 이 열려 있다 — base 가 기본 브랜치가 아니어도 드러낸다
    on Sep 1, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

area:setting설정 기능 영역bugSomething isn't working

Type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions