Redmine #4252 · 개발계

[BP] 이체 시 출금 자원 접근 권한 오류 안내 문구 수정 요청의 건

요청한 확인 항목이 기대한 결과와 일치했습니다.

QA Redmine #4261 · 업무 상태 QA 검증 완료·보고서 배포 확인 대기

확인 항목 12 전체 시나리오
통과 12 기대 결과와 일치
실패 0 문제 발견
확인 불가 0 조건 부족

핵심 결론

요청한 확인 항목이 기대한 결과와 일치했습니다.

전체 12개 항목이 기대한 결과와 일치했습니다.

가장 큰 문제

발견된 실패 항목이 없습니다.

확인 불가 항목은 기능 실패가 아니라 조건 부족 또는 검증 제외로 분리해 봅니다.

계정별 결과 비교

같은 확인 항목이 계정별로 어떻게 끝났는지 한눈에 봅니다.

VE
검증 항목VE
이체 후 내역 반영 통과
화면/버튼 진입 통과
목록 조회 범위 통과
생체인증 미사용 계정은 기존 비밀번호 인증 안내가 ... 통과
생체인증 사용 계정의 기존 앱 인증 안내와 정상 이... 통과
화면/버튼 진입 통과
화면/버튼 진입 통과
이체 후 내역 반영 통과
목록 조회 범위 통과
목록 조회 범위 통과
목록 조회 범위 통과
메뉴 노출·접근권한은 기존 가맹점 권한을 유지한다. 통과

진행률 100%

12/12개 항목 확인 완료

통과 12 실패 0 확인 불가 0

실제 실행 자료

QA 실행 결과에서 정리된 화면 캡처, 화면 재현 기록, 오류 내용을 이 페이지에서 바로 확인할 수 있습니다.

화면 캡처 0 화면 재현 기록 0 오류 내용 0 첨부 파일 0

QA 확인 내역

실패 항목을 먼저 배치했습니다. 각 항목을 열면 수행한 동작, 기대 결과, 실제 결과, 화면 캡처, 화면 재현 기록, 오류 내용을 확인할 수 있습니다.

통과1번째 확인 계정별 홈/새로고침에서 소속·지갑·잔액·정산 정보가 현재 계정과 일치한다. VE · 스토어 개발계 결과: A/B 홈 및 새로고침에서 현재 소속·지갑 확인. A W-60325 / 116,612원 / 정산 -1,906원, B W-60803 / 7,992원 / 정산 0원.
계정
VE
화면
스토어 개발계
수행 내용
계정별 홈/새로고침에서 소속·지갑·잔액·정산 정보가 현재 계정과 일치한다.
기대한 결과
계정별 홈/새로고침에서 소속·지갑·잔액·정산 정보가 현재 계정과 일치한다.
실제 결과
A/B 홈 및 새로고침에서 현재 소속·지갑 확인. A W-60325 / 116,612원 / 정산 -1,906원, B W-60803 / 7,992원 / 정산 0원.
통과2번째 확인 본인 지갑 선택 → 금액 입력 → 출금 확인 정상 진입, 입력·수수료가 정확하고 권한 오류가 없다. VE · 스토어 개발계 결과: A/B 모두 1,000원 입력 후 최종 확인 화면 진입. 수수료 330원, 최종 이체 금액 670원. 본인 지갑 정책 HTTP 200/OFF. 송금 미실행.
계정
VE
화면
스토어 개발계
수행 내용
본인 지갑 선택 → 금액 입력 → 출금 확인 정상 진입, 입력·수수료가 정확하고 권한 오류가 없다.
기대한 결과
본인 지갑 선택 → 금액 입력 → 출금 확인 정상 진입, 입력·수수료가 정확하고 권한 오류가 없다.
실제 결과
A/B 모두 1,000원 입력 후 최종 확인 화면 진입. 수수료 330원, 최종 이체 금액 670원. 본인 지갑 정책 HTTP 200/OFF. 송금 미실행.
통과3번째 확인 다른 부서 출금 지갑 접근 권한 오류 조건에서 **선택한 출금 지갑에 접근 권한이 없습니다. 출금 지갑을 확인해 주세요.** 표시, 기존 생체인증 정책 조회 실패 문구 미표시. VE · 스토어 개발계 결과: PASS (조회값 조정 재현). 다른 제공 계정의 부서로 정책 sourceId를 변경해 실제 서버 HTTP 403/SOURCE_ACCESS_DENIED를 받음. 수정 문구 표시, 기존 생체 정책 오류 문구 미표시. 응답 모킹 없음. 자연 UI에서 타 부서 지갑 선택은 재현하지 않음.
계정
VE
화면
스토어 개발계
수행 내용
다른 부서 출금 지갑 접근 권한 오류 조건에서 **선택한 출금 지갑에 접근 권한이 없습니다. 출금 지갑을 확인해 주세요.** 표시, 기존 생체인증 정책 조회 실패 문구 미표시.
기대한 결과
다른 부서 출금 지갑 접근 권한 오류 조건에서 **선택한 출금 지갑에 접근 권한이 없습니다. 출금 지갑을 확인해 주세요.** 표시, 기존 생체인증 정책 조회 실패 문구 미표시.
실제 결과
PASS (조회값 조정 재현). 다른 제공 계정의 부서로 정책 sourceId를 변경해 실제 서버 HTTP 403/SOURCE_ACCESS_DENIED를 받음. 수정 문구 표시, 기존 생체 정책 오류 문구 미표시. 응답 모킹 없음. 자연 UI에서 타 부서 지갑 선택은 재현하지 않음.
통과4번째 확인 생체인증 미사용 계정은 기존 비밀번호 인증 안내가 정상이다. VE · 스토어 개발계 결과: TRANSFER_PASSWORD_REQUIRED 활성화 후 A/B 실제 개발계 재검증 PASS. 테넌트 HTTP 200 기능 포함, 생체 정책 HTTP 200/OFF 확인. 최종 확인의 다음 버튼 → /transfer/password → 이체 비밀번호 확인/4~6자리 입력 안내 정상. type=password 빈 입력 및 입력 전 송금 버튼 비활성 확인. 비밀번호 입력·송금 제출은 미실행.
계정
VE
화면
스토어 개발계
수행 내용
생체인증 미사용 계정은 기존 비밀번호 인증 안내가 정상이다.
기대한 결과
생체인증 미사용 계정은 기존 비밀번호 인증 안내가 정상이다.
실제 결과
TRANSFER_PASSWORD_REQUIRED 활성화 후 A/B 실제 개발계 재검증 PASS. 테넌트 HTTP 200 기능 포함, 생체 정책 HTTP 200/OFF 확인. 최종 확인의 다음 버튼 → /transfer/password → 이체 비밀번호 확인/4~6자리 입력 안내 정상. type=password 빈 입력 및 입력 전 송금 버튼 비활성 확인. 비밀번호 입력·송금 제출은 미실행.
통과5번째 확인 생체인증 사용 계정의 기존 앱 인증 안내와 정상 이체 흐름을 사용자 수동 결과로 확인한다. VE · 스토어 앱(사용자 수동) 결과: 사용자 앱 수동 결과 PASS. 최초 로그인 → 이체정보 입력 → 생체인증 등록 → 이체 성공. 재로그인 → 이체정보 입력 → 생체인증 성공. 채팅 보고를 근거로 판정했으며 자동 재현/스크린샷 검증과 구분한다. 두 번째 흐름의 이체 완료는 별도 확인된 것으로 기록하지 않는다.
계정
VE
화면
스토어 앱(사용자 수동)
수행 내용
생체인증 사용 계정의 기존 앱 인증 안내와 정상 이체 흐름을 사용자 수동 결과로 확인한다.
기대한 결과
생체인증 사용 계정의 기존 앱 인증 안내와 정상 이체 흐름을 사용자 수동 결과로 확인한다.
실제 결과
사용자 앱 수동 결과 PASS. 최초 로그인 → 이체정보 입력 → 생체인증 등록 → 이체 성공. 재로그인 → 이체정보 입력 → 생체인증 성공. 채팅 보고를 근거로 판정했으며 자동 재현/스크린샷 검증과 구분한다. 두 번째 흐름의 이체 완료는 별도 확인된 것으로 기록하지 않는다.

증거 자료

통과6번째 확인 같은 계정·부서에서 화면 내 뒤로가기·재진입 시 지갑·입력·수수료가 불필요하게 초기화되지 않는다. 새로고침 입력 보존은 요구하지 않는다. VE · 스토어 개발계 결과: A/B 모두 최종 확인 → 이전 → 재진입 시 금액 1,000원·본인 지갑·수수료 330원 유지. B 최초 자동 판정은 경로 전환 전 관찰 오류였으며 step3 진입/330원 표시 대기 후 재검증 통과.
계정
VE
화면
스토어 개발계
수행 내용
같은 계정·부서에서 화면 내 뒤로가기·재진입 시 지갑·입력·수수료가 불필요하게 초기화되지 않는다. 새로고침 입력 보존은 요구하지 않는다.
기대한 결과
같은 계정·부서에서 화면 내 뒤로가기·재진입 시 지갑·입력·수수료가 불필요하게 초기화되지 않는다. 새로고침 입력 보존은 요구하지 않는다.
실제 결과
A/B 모두 최종 확인 → 이전 → 재진입 시 금액 1,000원·본인 지갑·수수료 330원 유지. B 최초 자동 판정은 경로 전환 전 관찰 오류였으며 step3 진입/330원 표시 대기 후 재검증 통과.
통과7번째 확인 A 출금 입력 후 로그아웃 → B 로그인 → 출금 진입 시 A 지갑·금액·인증 상태가 남지 않는다. VE · 스토어 개발계 결과: A 금액 입력 후 앱 로그아웃 → B PIN 로그인 → 송금 진입. B 잔액 7,992원, 입금 계좌 입력 빈 값, A 잔액/입력 미표시.
계정
VE
화면
스토어 개발계
수행 내용
A 출금 입력 후 로그아웃 → B 로그인 → 출금 진입 시 A 지갑·금액·인증 상태가 남지 않는다.
기대한 결과
A 출금 입력 후 로그아웃 → B 로그인 → 출금 진입 시 A 지갑·금액·인증 상태가 남지 않는다.
실제 결과
A 금액 입력 후 앱 로그아웃 → B PIN 로그인 → 송금 진입. B 잔액 7,992원, 입금 계좌 입력 빈 값, A 잔액/입력 미표시.

증거 자료

통과8번째 확인 A → B → A 로그인 때 홈 소속·지갑·잔액이 매번 현재 계정 기준이다. VE · 스토어 개발계 결과: 동일 브라우저 컨텍스트에서 A → B → A 앱 로그인. 홈 이름·잔액이 매번 해당 계정으로 변경.
계정
VE
화면
스토어 개발계
수행 내용
A → B → A 로그인 때 홈 소속·지갑·잔액이 매번 현재 계정 기준이다.
기대한 결과
A → B → A 로그인 때 홈 소속·지갑·잔액이 매번 현재 계정 기준이다.
실제 결과
동일 브라우저 컨텍스트에서 A → B → A 앱 로그인. 홈 이름·잔액이 매번 해당 계정으로 변경.

증거 자료

통과9번째 확인 응답 지연 중 로그아웃 후 늦은 조회 결과로 인증이 복구되지 않는다. VE · 스토어 개발계 결과: PASS (통제 지연). 실제 A 내정보 HTTP 200 응답을 보류하고 로그아웃 후 해제. 로그인 화면 유지, 인증 복구 없음.
계정
VE
화면
스토어 개발계
수행 내용
응답 지연 중 로그아웃 후 늦은 조회 결과로 인증이 복구되지 않는다.
기대한 결과
응답 지연 중 로그아웃 후 늦은 조회 결과로 인증이 복구되지 않는다.
실제 결과
PASS (통제 지연). 실제 A 내정보 HTTP 200 응답을 보류하고 로그아웃 후 해제. 로그인 화면 유지, 인증 복구 없음.

증거 자료

통과10번째 확인 A 조회 중 B 로그인 후 늦은 A 결과가 B 정보를 덮어쓰지 않는다. VE · 스토어 개발계 결과: PASS (통제 지연). 실제 A 내정보 응답 보류 중 로그아웃/B 로그인 후 해제. B 소속·잔액 유지, A 정보 덮어쓰기 없음.
계정
VE
화면
스토어 개발계
수행 내용
A 조회 중 B 로그인 후 늦은 A 결과가 B 정보를 덮어쓰지 않는다.
기대한 결과
A 조회 중 B 로그인 후 늦은 A 결과가 B 정보를 덮어쓰지 않는다.
실제 결과
PASS (통제 지연). 실제 A 내정보 응답 보류 중 로그아웃/B 로그인 후 해제. B 소속·잔액 유지, A 정보 덮어쓰기 없음.

증거 자료

통과11번째 확인 출금 확인 정책 조회 대기 중 계정 변경 시 이전 인증 안내·출금 정보를 채택하지 않는다. VE · 스토어 개발계 결과: PASS (통제 지연). 실제 A 출금 정책 응답 보류 중 로그아웃/B 로그인 후 해제. B 홈 유지, 이전 출금 화면/인증 안내 미채택.
계정
VE
화면
스토어 개발계
수행 내용
출금 확인 정책 조회 대기 중 계정 변경 시 이전 인증 안내·출금 정보를 채택하지 않는다.
기대한 결과
출금 확인 정책 조회 대기 중 계정 변경 시 이전 인증 안내·출금 정보를 채택하지 않는다.
실제 결과
PASS (통제 지연). 실제 A 출금 정책 응답 보류 중 로그아웃/B 로그인 후 해제. B 홈 유지, 이전 출금 화면/인증 안내 미채택.

증거 자료

통과12번째 확인 메뉴 노출·접근권한은 기존 가맹점 권한을 유지한다. VE · 스토어 개발계 결과: A/B 가맹점 메뉴 링크 구성 동일. 지갑·교환·결제·거래·정산·정보·카드 경로 진입과 API HTTP 200 확인. 메뉴 변경 전 기준본과 별도 비교는 하지 않음.
계정
VE
화면
스토어 개발계
수행 내용
메뉴 노출·접근권한은 기존 가맹점 권한을 유지한다.
기대한 결과
메뉴 노출·접근권한은 기존 가맹점 권한을 유지한다.
실제 결과
A/B 가맹점 메뉴 링크 구성 동일. 지갑·교환·결제·거래·정산·정보·카드 경로 진입과 API HTTP 200 확인. 메뉴 변경 전 기준본과 별도 비교는 하지 않음.

상세 보고서 원문

#4252 개발계 QA 결과

  • Status: PASS
  • Roles: VE
  • Passed: 12
  • Failed: 0
  • Blocked: 0
  • Skipped: 0
  • 대상: 개발계 스토어 / 일반 가맹점 VE / 제공된 A·B 계정
  • 본 항목: 통과 12 / 실패 0 / 확인불가 0 / 개인 수동 대기 0 (자동 11 + 사용자 수동 보고 1)
  • 최종 판정: PASS. 본 항목 12개와 포함된 회귀 확인 완료.
  • 자동 QA에서는 실제 송금·승인 생성·생체 등록·교환·결제·카드 신청/충전 미실행. 생체 등록과 이체 성공은 사용자 앱 수동 결과로 보고받았다.

계정별 관찰값

계정현재 홈 소속지갑잔액정산예정금
A박재민_가맹_한결데W-60325116,612원-1,906원
B김경주_가맹_코페이_수W-608037,992원0원

사전 확인: 두 계정의 개발계 PIN 로그인 후 홈 정상 진입. 로그인은 본 항목 집계에서 제외했다.

본 항목 결과

번호판정확인 내용
1PASSA/B 홈 및 새로고침에서 현재 소속·지갑 확인. A W-60325 / 116,612원 / 정산 -1,906원, B W-60803 / 7,992원 / 정산 0원.
2PASSA/B 모두 1,000원 입력 후 최종 확인 화면 진입. 수수료 330원, 최종 이체 금액 670원. 본인 지갑 정책 HTTP 200/OFF. 송금 미실행.
3PASSPASS (조회값 조정 재현). 다른 제공 계정의 부서로 정책 sourceId를 변경해 실제 서버 HTTP 403/SOURCE_ACCESS_DENIED를 받음. 수정 문구 표시, 기존 생체 정책 오류 문구 미표시. 응답 모킹 없음. 자연 UI에서 타 부서 지갑 선택은 재현하지 않음.
4PASSTRANSFER_PASSWORD_REQUIRED 활성화 후 A/B 실제 개발계 재검증 PASS. 테넌트 HTTP 200 기능 포함, 생체 정책 HTTP 200/OFF 확인. 최종 확인의 다음 버튼 → /transfer/password → 이체 비밀번호 확인/4~6자리 입력 안내 정상. type=password 빈 입력 및 입력 전 송금 버튼 비활성 확인. 비밀번호 입력·송금 제출은 미실행.
5PASS (사용자 수동 보고)사용자 앱 수동 결과 PASS. 최초 로그인 → 이체정보 입력 → 생체인증 등록 → 이체 성공. 재로그인 → 이체정보 입력 → 생체인증 성공. 채팅 보고를 근거로 판정했으며 자동 재현/스크린샷 검증과 구분한다. 두 번째 흐름의 이체 완료는 별도 확인된 것으로 기록하지 않는다.
6PASSA/B 모두 최종 확인 → 이전 → 재진입 시 금액 1,000원·본인 지갑·수수료 330원 유지. B 최초 자동 판정은 경로 전환 전 관찰 오류였으며 step3 진입/330원 표시 대기 후 재검증 통과.
7PASSA 금액 입력 후 앱 로그아웃 → B PIN 로그인 → 송금 진입. B 잔액 7,992원, 입금 계좌 입력 빈 값, A 잔액/입력 미표시.
8PASS동일 브라우저 컨텍스트에서 A → B → A 앱 로그인. 홈 이름·잔액이 매번 해당 계정으로 변경.
9PASSPASS (통제 지연). 실제 A 내정보 HTTP 200 응답을 보류하고 로그아웃 후 해제. 로그인 화면 유지, 인증 복구 없음.
10PASSPASS (통제 지연). 실제 A 내정보 응답 보류 중 로그아웃/B 로그인 후 해제. B 소속·잔액 유지, A 정보 덮어쓰기 없음.
11PASSPASS (통제 지연). 실제 A 출금 정책 응답 보류 중 로그아웃/B 로그인 후 해제. B 홈 유지, 이전 출금 화면/인증 안내 미채택.
12PASSA/B 가맹점 메뉴 링크 구성 동일. 지갑·교환·결제·거래·정산·정보·카드 경로 진입과 API HTTP 200 확인. 메뉴 변경 전 기준본과 별도 비교는 하지 않음.

재현 방식과 증거

  • 권한 오류: 제공된 두 부서 사이의 조회 sourceId를 조정해 실제 서버 403을 받았다. 응답을 모킹하지 않았다. 자연 UI의 다른 부서 지갑 선택 성공으로 해석하지 않는다.
  • 지연 9~11: 실제 서버 응답을 브라우저에서 보류·해제했다. 로딩 오버레이가 일반 클릭을 막아 로그아웃/로그인 버튼의 앱 이벤트를 DOM click으로 호출했다. 정상 자격증명·PIN 인증을 유지한 통제된 경합 테스트이며 자연 발생 지연 관찰과 구분한다.
  • 금액 1,000원, 수수료 330원, 최종 이체 금액 670원. 마지막 송금 버튼은 누르지 않았다.

실제 서버 403 화면 · A 최종 확인 · B 최종 확인

비밀번호 필수 조건 재검증

사용자 활성화 후 실제 테넌트 응답의 TRANSFER_PASSWORD_REQUIRED를 확인했다. A/B 모두 기존 비밀번호 입력 안내까지 정상 진입했다. 입력/송금 실행 없이 종료했다.

재검증 결과 · A 비밀번호 안내 · B 비밀번호 안내

실제 개발계 반영

  • 전달된 JS: /assets/index-DMMhMwXo.js
  • SHA-256: a56c7f91fbe4d26aa4d24f50c1045fd30970b04870eaad8b7e3cff6a2904203d
  • 새 오류 문구·출금 부서 불일치 방어 문구·인증 변경 방어 문구·__isRequestCurrent 포함. 이전 생체 정책 조회 문구 미포함.
  • 프론트 원격 develop-rc a257b48d(6239ada6 포함). 실제 전달 번들의 수정 표식과 동작을 검증했지만 정확한 빌드 커밋 매핑은 확인하지 못했다.
  • 백엔드 원격 develop-rc d581990f2b 빌드 성공은 확인. 최신 조사 배포 작업은 stage이며 dev 진단 로그 배포는 미확인. 이 사실을 기능 실패로 판정하지 않았다.

회귀 확인

영역판정내용
R1PASSA/B 지갑 조회 및 잔고 교환 화면 현재 잔액 일치. 교환 미실행.
R2PASSA/B 수기결제 진입, 현재 계정 가맹점 정보 및 auth MID 조회 확인. 결제 미실행.
R4PASSA/B 거래·정산·회원 정보 조회 HTTP 200, 현재 사용자 요청 경로 확인. 당일 내역은 0건. 회원 정보 변경 없음.

생체인증 앱 수동 결과

사용자 보고로 5번을 통과 처리했다. 첫 흐름은 생체인증 등록 후 이체 성공, 두 번째 흐름은 재로그인 후 생체인증 성공이다. 두 번째 흐름의 이체 완료는 별도 주장하지 않는다. 자동 재현 또는 스크린샷 증거는 없으며 사용자 수동 결과 기록으로 구분했다.

범위 정정 및 완료

사용자 요청으로 비스킷카드 정보·상세·이용권한·수수료 회귀(R3)를 QA 범위에서 제외했다. 남은 확인 항목은 없으며, 본 항목 12개와 포함된 회귀 R1·R2·R4는 모두 통과했다. 사용자 수동 보고를 포함한 판정이다. 사용자 승인에 따라 보고서 공개 배포와 QA 종료 절차를 진행한다.

보관 및 재현

  • 구조화 최종 결과, 증거 요약, 원문 체크리스트. intake-result.json은 접수 당시 기록으로 보존하며 최종 판정은 result.json이다.
  • 전체 공용 qa:run은 수행하지 않았다. 계정 전용 Playwright 절차로 실제 개발계를 검증했다.
  • 인증정보·입금 계좌번호는 보고서에서 제외/마스킹. 외부 등록·보고서 배포·QA 종료는 사용자 승인에 따라 진행한다.
  • #4233 결과와 제품 PROJECT_CONTEXT.md 보존. 제품 코드 수정 없음.

재현 절차

  1. 제공된 A/B 일반 가맹점 계정으로 개발계 스토어에 로그인한다.
  2. 홈에서 현재 소속·잔액을 확인하고 송금 준비 화면을 연다. 제공된 수취 계좌를 입력해 조회한다.
  3. 1,000원을 입력하고 최종 확인까지 이동해 지갑·금액·수수료를 확인한다. 실제 송금은 제출하지 않는다.
  4. 이체 비밀번호 필수 조건에서는 다음을 눌러 4~6자리 비밀번호 입력 안내를 확인하고 종료한다.
  5. 권한 오류와 응답 지연은 첨부한 통제 재현 기록의 방법으로 구분한다.
  6. 생체 등록/이체는 사용자 앱 수동 결과 기록을 참조한다. 자동 실행으로 대체하지 않는다.

전체 증거 자료