mirror of
https://github.com/cna-bootcamp/phonebill.git
synced 2025-12-06 08:06:24 +00:00
- 3개 핵심 비즈니스 플로우별 외부 시퀀스 다이어그램 작성 - 사용자인증플로우.puml: UFR-AUTH-010, UFR-AUTH-020 반영 - 요금조회플로우.puml: UFR-BILL-010~040 반영 - 상품변경플로우.puml: UFR-PROD-010~040 반영 - 논리아키텍처와 참여자 완전 일치 - UI/UX 설계서 사용자 플로우 100% 반영 - 클라우드 패턴 적용 (API Gateway, Cache-Aside, Circuit Breaker) - PlantUML 문법 검사 통과 (mono 테마 적용) 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
12 KiB
12 KiB
통신요금 관리 서비스 - 유저스토리
마이크로서비스 구성
- Auth - 사용자 인증 및 인가 관리
- Bill-Inquiry - 요금 조회 서비스
- Product-Change - 상품 변경 서비스
유저스토리
1. Auth 서비스
1) 사용자 인증 및 인가
UFR-AUTH-010: [사용자 로그인] MVNO 고객으로서 | 나는 통신요금을 관리하기 위해 | 안전하게 로그인하고 싶다.
- 시나리오: 고객 로그인
MVNO 서비스에 접근한 상황에서 | ID와 Password를 입력하여 로그인 요청을 하면 | 인증이 완료되고 메인 화면이 표시된다.
[입력 요구사항]
- 인증 정보 ID: 고객 식별자 입력
- Password: 계정 비밀번호 입력
- 자동 로그인: 선택 옵션 제공
[인증 처리]
- 성공: 메인 서비스 화면으로 이동
- 실패: "ID 또는 비밀번호를 확인해주세요" 메시지
- 5회 연속 실패: 30분간 계정 잠금 안내
[검증 요구사항]
- 계정이 있어야 함
- 인증 정보의 정확성 검증
- 세션 보안 처리
- M/5
---
UFR-AUTH-020: [사용자 인가] 인증된 고객으로서 | 나는 서비스별 접근 권한을 확인받기 위해 | 화면에 대한 접근권한이 부여되기를 원한다.
- 시나리오: 서비스 접근 권한 확인
로그인 완료 후 특정 서비스 화면에 접근한 상황에서 | 해당 서비스 이용 권한을 확인하면 | 권한이 있는 경우 서비스 화면이 표시된다.
[접근 권한 확인]
- 요금 조회 서비스 접근권한 확인
- 상품 변경 서비스 접근권한 확인
- 권한별 메뉴 표시/숨김 처리
[권한 검증]
- 성공: 해당 서비스 화면 제공
- 실패: "서비스 이용 권한이 없습니다" 메시지 표시
- 접근 권한이 부여되어 있어야 함
- M/3
---
2. Bill-Inquiry 서비스
1) 요금 조회
UFR-BILL-010: [요금조회 메뉴 접근] MVNO 고객으로서 | 나는 내 통신요금을 확인하기 위해 | 요금 조회 메뉴를 요청하고 싶다.
- 시나리오: 요금조회 메뉴 표시
인증된 상태에서 | 요금 조회 메뉴를 요청하면 | 요금조회 메뉴가 화면에 표시된다.
[메뉴 표시 요구사항]
- 요금 조회 메뉴 화면 제공
- 고객 회선번호 표시
- 조회월 선택 옵션 제공
- 요금 조회 신청 버튼 활성화
[접근 권한]
- 요금 조회에 대한 접근권한이 부여되어 있어야 함
- mvno AP server를 통한 화면 제공
[오류 처리]
- 메뉴 로딩 실패 시: "요금 조회 메뉴 로딩에 실패하였습니다" 메시지
- M/5
---
UFR-BILL-020: [요금조회 신청] MVNO 고객으로서 | 나는 특정 월의 통신요금을 확인하기 위해 | 조회월을 선택하여 요금 조회를 신청하고 싶다.
- 시나리오 1: 조회월 미선택 (기본 조회)
요금조회 메뉴에서 | 조회월을 입력하지 않고 조회를 신청하면 | 조회시점 기준 당월 청구요금이 조회된다.
[기본 조회 처리]
- 입력 데이터: 회선번호
- 조회 대상: 현재 월 청구요금
- 결과 확인: 조회시점 기준 당월 청구요금을 확인했다
- 시나리오 2: 조회월 선택 조회
요금조회 메뉴에서 | 특정 조회월을 선택하고 조회를 신청하면 | 해당 조회월의 청구요금이 조회된다.
[선택 조회 처리]
- 입력 데이터: 회선번호, 조회월
- 조회 대상: 선택한 월의 청구요금
- 결과 확인: 조회월의 청구요금을 확인했다
[조회 선택 옵션]
- 조회월을 선택한다: 특정 월 선택하여 조회
- 조회월을 선택하지 않는다: 당월 기준으로 조회
[처리 결과]
- 성공: 요금 조회가 신청되었다
- 실패: "요금 조회 신청에 실패하였습니다" 메시지
- M/8
---
UFR-BILL-030: [KOS 요금조회 서비스 연동] 시스템으로서 | 나는 정확한 요금 정보를 제공하기 위해 | KOS의 요금 조회 서비스를 호출하고 응답을 처리하고 싶다.
- 시나리오: KOS 요금조회 API 호출
요금 조회 요청을 받은 상황에서 | 요금 조회 API를 호출하면 | KOS 요금 조회 서비스의 응답을 받아 처리한다.
[API 호출 요구사항]
- 입력 데이터: 회선번호, 조회월 (선택)
- 호출 대상: KOS-Order 시스템
- 호출 규격: KOS 요금조회 서비스가 요구하는 규격에 맞게 호출
- 응답 처리: KOS 요금 조회 서비스의 응답을 받았다
[응답 데이터]
- 요금조회 결과 정보
- 상품명: 현재 이용 중인 요금제
- 약정정보: 계약 약정 조건
- 청구월: 요금 청구 월
- 요금: 청구 요금 금액
- 할인정보: 적용된 할인 내역
- 사용량: 통화, 데이터 사용량
- 예상해지비용: 중도 해지 시 비용
- 단말기할부금: 단말기 할부 잔액
- 청구/납부정보: 요금 청구 및 납부 상태
[처리 결과]
- 성공: 요금 조회 API 호출에 성공하였다
- 실패: 요금 조회 API 호출에 실패하였다
- M/13
---
UFR-BILL-040: [요금조회 결과 전송] 시스템으로서 | 나는 조회된 요금 정보를 고객에게 제공하기 위해 | MVNO AP로 조회 결과를 전송하고 연동 이력을 저장하고 싶다.
- 시나리오: 요금조회 결과 화면 출력
KOS에서 요금조회 결과를 받은 상황에서 | MVNO AP로 결과를 전송하면 | 요금조회 결과가 화면에 출력되고 전송 이력이 기록된다.
[결과 전송 처리]
- 전송 대상: mvno AP server
- 전송 데이터: 요금조회 결과 정보 (상품명, 청구월, 요금 등 전체)
- 화면 출력: 요금조회 결과를 화면에 출력한다
- 이력 기록: 요금 조회 결과를 전송하고, 전송이력을 기록했다
[처리 이력 관리]
- 요금 조회 요청 이력: MVNO → MP
- 요청일시, 회선번호, 조회월
- 요금 조회 처리 이력: MP → KOS
- 조회요청일시, 조회처리일시, 처리결과
- 요청한 회선번호와 조회월 정보
- M/8
---
3. Product-Change 서비스
1) 상품 변경
UFR-PROD-010: [상품변경 메뉴 접근] MVNO 고객으로서 | 나는 내 요금제를 변경하기 위해 | 상품 변경 요청 메뉴를 요청하고 싶다.
- 시나리오: 상품변경 메뉴 표시
인증된 상태에서 | 상품 변경 요청 메뉴를 요청하면 | 상품변경 메뉴가 화면에 표시된다.
[메뉴 표시 요구사항]
- 상품 변경 요청 메뉴 화면 제공
- 고객 정보 표시 (회선번호, 고객ID)
- 현재 상품 정보 표시
- 변경 가능한 상품 목록 제공
[접근 권한]
- 화면에 대한 접근권한이 부여되어 있어야 함
- mvno AP server를 통한 화면 제공
[오류 처리]
- 메뉴 로딩 실패 시: "상품 변경 요청 메뉴 로딩에 실패하였습니다" 메시지
- M/5
---
UFR-PROD-020: [상품변경 화면 접근] MVNO 고객으로서 | 나는 상품을 선택하고 변경하기 위해 | 상품 변경 화면을 요청하고 싶다.
- 시나리오: 상품변경 화면 표시
상품변경 메뉴에서 | 상품 변경 화면을 요청하면 | 상품 선택 및 변경 요청이 가능한 화면이 표시된다.
[화면 표시 요구사항]
- 고객정보 및 상품정보 조회 및 표시
- 현재 이용 상품 정보 표시
- 변경 가능한 상품 목록 제공
- 상품 선택 및 변경 요청 기능
[데이터 조회]
- 고객정보 요청: KOS-Order 시스템에서 고객 정보 조회
- 상품정보 요청: KOS-Order 시스템에서 상품 정보 조회
- 조회 결과: 고객정보가 취득되었다, 상품 정보가 취득되었다
[처리 결과]
- 성공: 상품 변경 화면이 보였다
- 실패: "상품 변경 화면 접속에 실패하였습니다" 메시지
- M/8
---
UFR-PROD-030: [상품변경 요청] MVNO 고객으로서 | 나는 더 나은 요금제로 변경하기 위해 | 원하는 상품을 선택하여 변경을 요청하고 싶다.
- 시나리오: 상품 선택 및 변경 요청
상품변경 화면에서 | 상품(요금제)을 선택 후 상품 변경 요청을 하면 | 변경 요청이 접수되고 사전 체크가 진행된다.
[변경 요청 입력]
- 회선번호: 고객 회선 식별자
- 변경 전 상품코드: 현재 이용 중인 상품
- 변경 후 상품코드: 변경하려는 상품
- 생성일시: 요청 일시
[상품 변경 사전 체크]
- 사전 체크 조건
- 현재 판매중인 상품이어야 함
- 변경 요청한 사업자에서 판매중인 상품이어야 함
- 변경 요청 회선은 사용 중인 상태여야 함 (정지 상태가 아니어야 함)
- 사전체크 결과에서 정상(변경가능)으로 응답처리 되어야 함
[처리 결과]
- 성공: 상품 변경이 진행되었다, 상품 사전 체크에 성공하였다
- 실패: 상품 사전 체크에 실패하였다
- M/13
---
UFR-PROD-040: [상품변경 처리] 시스템으로서 | 나는 승인된 상품 변경 요청을 완료하기 위해 | KOS 시스템과 연동하여 상품 변경을 처리하고 싶다.
- 시나리오 1: 상품 변경 성공 처리
사전 체크가 통과된 상황에서 | KOS에 상품 변경 처리를 요청하면 | 상품 변경이 완료되고 완료 결과가 전송된다.
[성공 처리]
- 상품 변경 완료: 상품 변경이 완료되었다
- 처리 결과 전송: 변경 후 상품 코드, 상품 변경 처리 결과(정상), 메시지
- 화면 출력: 상품 변경 완료 문구를 화면에 출력한다
- 이력 기록: 상품 변경 처리하고 연동 이력을 기록한다
- 시나리오 2: 상품 변경 실패 처리
사전 체크는 통과했으나 실제 변경 처리 중 문제가 발생한 상황에서 | 변경 처리가 실패하면 | 실패 사유에 따른 안내 메시지가 표시된다.
[실패 처리]
- 변경 실패: 상품 변경이 실패했다, 상품 변경 요청을 실패하였다
- 처리 결과 전송: 변경 후 상품 코드, 상품 변경 처리 결과(실패), 실패 메시지
- 화면 출력: 상품 변경에 실패하여 실패 사유에 따라 문구를 화면에 출력한다
- 이력 기록: 상품 변경 실패 처리하고 실패 이력을 기록한다
[처리 이력 관리]
- 상품 변경 요청 이력: MVNO → MP
- 회선번호, 변경 전 상품코드, 변경 후 상품코드, 생성일시
- 상품 변경 처리 이력: MP → KOS
- 회선번호, 변경 전/후 상품코드, 처리 결과, 처리 메시지
- M/21
---
데이터 관계
고객 (1) : (N) 요금조회
고객 (1) : (N) 상품변경
고객정보 - 고객ID, 회선번호, 상품정보
상품정보 - 상품코드, 상품명, 가격 정보
요청이력 - 요청일시, 처리일시, 처리결과
처리이력 - 연동 시스템, 요청/응답 데이터, 처리결과
주요 기술 고려사항
외부 시스템 연동
- KOS-Order 시스템: 실제 통신사 백엔드 시스템과의 안정적 연동 필요
- MVNO AP Server: 프론트엔드 시스템과의 실시간 통신 처리
- Circuit Breaker: 외부 시스템 장애 시 서비스 가용성 확보
보안 및 인증
- 인증/인가: 고객 정보 보호를 위한 강력한 인증 체계
- 데이터 암호화: 민감한 고객 정보 및 요금 정보 암호화
- 세션 관리: 안전한 세션 처리 및 타임아웃 관리
성능 및 안정성
- 응답 시간: KOS 연동 API의 안정적 응답 시간 확보
- 이력 관리: 모든 요청/처리 이력의 정확한 기록 및 추적
- 오류 처리: 각 단계별 명확한 오류 메시지 및 복구 방안
데이터 일관성
- 트랜잭션 처리: 상품 변경 시 데이터 일관성 보장
- 이력 동기화: 요청/처리 이력의 정확한 동기화
- 상태 관리: 각 요청의 상태 추적 및 관리