# #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-60325 | 116,612원 | -1,906원 |
| B | 김경주_가맹_코페이_수 | W-60803 | 7,992원 | 0원 |

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

## 본 항목 결과

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

## 재현 방식과 증거

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

[실제 서버 403 화면](artifacts/screenshots/real403-ui.png) · [A 최종 확인](artifacts/screenshots/A-confirm.png) · [B 최종 확인](artifacts/screenshots/B-confirm.png)

## 비밀번호 필수 조건 재검증

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

[재검증 결과](artifacts/password-required.json) · [A 비밀번호 안내](artifacts/screenshots/A-password-required.png) · [B 비밀번호 안내](artifacts/screenshots/B-password-required.png)

## 실제 개발계 반영

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

## 회귀 확인

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

## 생체인증 앱 수동 결과

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

## 범위 정정 및 완료

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

## 보관 및 재현

- [구조화 최종 결과](result.json), [증거 요약](artifacts/result-summary.json), [원문 체크리스트](checklist.json). 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. 생체 등록/이체는 사용자 앱 수동 결과 기록을 참조한다. 자동 실행으로 대체하지 않는다.

