mirror of
https://github.com/cna-bootcamp/phonebill.git
synced 2025-12-06 16:16:23 +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>
127 lines
4.9 KiB
Plaintext
127 lines
4.9 KiB
Plaintext
@startuml
|
|
!theme mono
|
|
title 통신요금 관리 서비스 - 상품변경 플로우 (외부 시퀀스)
|
|
|
|
actor "MVNO 고객" as User
|
|
participant "Frontend\n(MVNO Web)" as Frontend
|
|
participant "API Gateway" as Gateway
|
|
participant "Auth Service" as Auth
|
|
participant "Product-Change\nService" as ProductService
|
|
participant "Redis Cache" as Redis
|
|
participant "Product DB" as ProductDB
|
|
participant "KOS-Order\nSystem" as KOS
|
|
participant "MVNO AP\nServer" as MVNO
|
|
|
|
== 1. 상품변경 메뉴 접근 (UFR-PROD-010) ==
|
|
|
|
User -> Frontend : 상품변경 메뉴 요청
|
|
Frontend -> Gateway : GET /product/menu
|
|
Gateway -> Auth : 권한 확인 요청
|
|
Auth -> Gateway : 권한 확인 응답
|
|
note right : UFR-AUTH-020\n서비스 접근권한 확인
|
|
|
|
alt 권한 있음
|
|
Gateway -> ProductService : GET /menu
|
|
ProductService -> Redis : 고객정보 조회 (Cache-Aside)
|
|
|
|
alt 캐시 Miss
|
|
ProductService -> KOS : 고객정보 조회
|
|
note right : Circuit Breaker 적용\n타임아웃: 3초
|
|
KOS -> ProductService : 고객정보 응답
|
|
ProductService -> Redis : 고객정보 캐싱 (TTL: 4시간)
|
|
end
|
|
|
|
Redis -> ProductService : 고객정보 반환
|
|
ProductService -> Gateway : 메뉴 데이터 응답
|
|
Gateway -> Frontend : 메뉴 화면 데이터
|
|
Frontend -> User : 상품변경 메뉴 표시
|
|
else 권한 없음
|
|
Gateway -> Frontend : 권한 오류 응답
|
|
Frontend -> User : "서비스 이용 권한이 없습니다"
|
|
end
|
|
|
|
== 2. 상품변경 화면 (UFR-PROD-020) ==
|
|
|
|
User -> Frontend : 상품변경 화면 요청
|
|
Frontend -> Gateway : GET /product/change
|
|
Gateway -> ProductService : GET /change
|
|
|
|
ProductService -> Redis : 상품정보 조회 (Cache-Aside)
|
|
|
|
alt 캐시 Miss
|
|
ProductService -> KOS : 상품정보 조회
|
|
note right : Circuit Breaker 적용
|
|
KOS -> ProductService : 상품정보 응답
|
|
ProductService -> Redis : 상품정보 캐싱 (TTL: 24시간)
|
|
end
|
|
|
|
Redis -> ProductService : 상품정보 반환
|
|
ProductService -> Gateway : 상품목록 데이터
|
|
Gateway -> Frontend : 변경가능 상품목록
|
|
Frontend -> User : 상품변경 화면 표시
|
|
|
|
== 3. 상품변경 요청 및 사전체크 (UFR-PROD-030) ==
|
|
|
|
User -> Frontend : 상품 선택 및 변경 요청
|
|
Frontend -> Gateway : POST /product/request
|
|
Gateway -> ProductService : 상품변경 요청\n{회선번호, 변경전상품코드, 변경후상품코드}
|
|
|
|
ProductService -> ProductService : 사전체크 수행
|
|
note right : 1. 판매중인 상품 확인\n2. 사업자 일치 확인\n3. 회선 사용상태 확인
|
|
|
|
alt 사전체크 성공
|
|
ProductService -> Gateway : 사전체크 성공
|
|
Gateway -> Frontend : 변경 요청 접수
|
|
Frontend -> User : "상품 변경이 진행되었다"
|
|
else 사전체크 실패
|
|
ProductService -> Gateway : 사전체크 실패\n{실패사유}
|
|
Gateway -> Frontend : 체크 실패 응답
|
|
Frontend -> User : "상품 사전 체크에 실패하였다"
|
|
note left : 실패사유별 안내메시지 표시
|
|
end
|
|
|
|
== 4. KOS 상품변경 처리 (UFR-PROD-040) ==
|
|
|
|
alt 사전체크 통과한 경우
|
|
ProductService -> KOS : 상품변경 처리 요청
|
|
note right : Circuit Breaker 적용\n타임아웃: 5초
|
|
|
|
alt KOS 상품변경 성공
|
|
KOS -> ProductService : 변경 완료 응답\n{변경후상품코드, 처리결과:정상}
|
|
|
|
ProductService -> MVNO : 변경완료 결과 전송
|
|
note right : 성공 메시지:\n"상품 변경이 완료되었다"
|
|
|
|
ProductService -> ProductDB : 변경 이력 저장 (비동기)
|
|
note left : 변경 이력:\n- 회선번호, 변경전/후상품코드\n- 생성일시, 처리결과
|
|
|
|
ProductService -> Redis : 고객 상품정보 캐시 무효화
|
|
ProductService -> Gateway : 변경 성공 응답
|
|
Gateway -> Frontend : 처리 완료 데이터
|
|
Frontend -> User : 변경 완료 화면
|
|
|
|
else KOS 상품변경 실패
|
|
KOS -> ProductService : 변경 실패 응답\n{처리결과:실패, 실패메시지}
|
|
|
|
ProductService -> MVNO : 변경실패 결과 전송
|
|
note right : 실패 메시지:\n"상품 변경에 실패하여\n실패 사유에 따라 문구를 화면에 출력한다"
|
|
|
|
ProductService -> ProductDB : 실패 이력 저장 (비동기)
|
|
ProductService -> Gateway : 변경 실패 응답
|
|
Gateway -> Frontend : 처리 실패 데이터
|
|
Frontend -> User : 변경 실패 화면
|
|
end
|
|
|
|
else Circuit Breaker Open (KOS 장애)
|
|
ProductService -> MVNO : 시스템 장애 안내
|
|
ProductService -> Gateway : 시스템 오류 응답
|
|
Gateway -> Frontend : 시스템 오류
|
|
Frontend -> User : "시스템 일시 장애, 잠시 후 재시도"
|
|
end
|
|
|
|
== 5. 처리결과 화면 (UFR-PROD-040) ==
|
|
|
|
User -> Frontend : 처리결과 확인
|
|
note right : SCR-008: 처리결과 화면\n- 성공/실패 상태 표시\n- 처리내용 또는 실패사유\n- 후속 액션 버튼
|
|
|
|
@enduml |