add outer/inner sequence

This commit is contained in:
cherry2250
2025-10-22 14:13:57 +09:00
parent 44011cd73a
commit 9fd060b275
127 changed files with 7527 additions and 9 deletions
@@ -0,0 +1,32 @@
[From string (line 208) ]
@startuml ai-트렌드분석및추천
...
... ( skipping 354 lines )
...
트렌드: {트렌드}
매장: {매장정보}
출력 형식:
- 이벤트 제목
- 추천 경품 (예산: 저)
- 참여 방법 (난이도: 낮음)
- 예상 참여자 수
- 예상 비용
- 예상 ROI"
end note
AIClient -> ExternalAPI: POST /api/v1/recommend\n(저비용 옵션)
ExternalAPI --> AIClient: 200 OK\n{추천안 1}
AIClient --> CB: 추천안 1
deactivate AIClient
CB --> RecommendEngine: 옵션 1 완료
deactivate CB
and
^^^^^
Syntax Error? (Assumed diagram type: sequence)
Binary file not shown.

After

Width:  |  Height:  |  Size: 223 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 153 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 110 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

@@ -0,0 +1,32 @@
[From string (line 101) ]
@startuml content-이미지생성
...
... ( skipping 247 lines )
...
CB --> Generator: Circuit State
deactivate CB
Generator -> DALLEClient: Fallback - DALL-E API 호출\n{prompt, style: SIMPLE}\nTimeout: 20초
activate DALLEClient
alt Fallback 성공
DALLEClient --> Generator: 심플 이미지 URL
deactivate DALLEClient
Generator -> CDN: CDN 업로드 요청\n{imageUrl, eventId, style: SIMPLE}
activate CDN
CDN --> Generator: CDN URL (심플)
deactivate CDN
else Fallback 실패
DALLEClient --> Generator: 실패 응답
deactivate DALLEClient
Generator -> Generator: 기본 템플릿 사용\n(심플)
end
end
and
^^^^^
Syntax Error? (Assumed diagram type: sequence)
Binary file not shown.

After

Width:  |  Height:  |  Size: 184 KiB

@@ -0,0 +1,32 @@
[From string (line 92) ]
@startuml distribution-다중채널배포
...
... ( skipping 238 lines )
...
else 실패 (일시적 오류)
WooridongneTV --> Retry: 500 Internal Server Error
deactivate WooridongneTV
note over Retry: 지수 백오프 대기\n(1초 → 2초 → 4초)
end
end
alt 3회 모두 실패
Retry --> Distributor: 배포 실패 (Retry 소진)
deactivate Retry
Distributor -> CB: recordFailure("WooridongneTV")
note over CB: 실패율 50% 초과 시\nCircuit Open (30초)
Distributor -> DB: 배포 채널 로그 저장\n{channel: WooridongneTV, status: FAILED, retries: 3}
Distributor --> Service: 실패 (Retry 소진)
end
end
deactivate Distributor
end
and
^^^^^
Syntax Error? (Assumed diagram type: sequence)
Binary file not shown.

After

Width:  |  Height:  |  Size: 202 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 166 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

@@ -0,0 +1,32 @@
[From string (line 38) ]
@startuml event-대시보드조회
...
... ( skipping 184 lines )
...
alt 캐시 히트
Cache --> Service: Dashboard data
Service --> Controller: DashboardResponse
else 캐시 미스
Cache --> Service: null
deactivate Cache
par
Service -> Repo: findTopByStatusAndUserId(ACTIVE, userId, limit=5)
activate Repo
Repo -> DB: SELECT e.*, COUNT(p.id) as participant_count\nFROM events e\nLEFT JOIN participants p ON e.id = p.ev ...
activate DB
DB --> Repo: Active events
deactivate DB
Repo --> Service: List<Event> (active)
deactivate Repo
and
^^^^^
Syntax Error? (Assumed diagram type: sequence)
Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 146 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 104 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 97 KiB

@@ -0,0 +1,32 @@
[From string (line 38) ]
@startuml user-로그아웃
...
... ( skipping 184 lines )
...
activate Controller
Controller -> Controller: @AuthenticationPrincipal\n(JWT에서 userId 추출)
Controller -> Controller: JWT 토큰 추출\n(Authorization 헤더에서)
Controller -> AuthService: logout(token, userId)
activate AuthService
== 1단계: JWT 토큰 검증 ==
AuthService -> JwtProvider: validateToken(token)
activate JwtProvider
JwtProvider -> JwtProvider: JWT 서명 검증\n(만료 시간 확인)
JwtProvider --> AuthService: boolean (유효 여부)
deactivate JwtProvider
alt JWT 토큰 무효
AuthService --> Controller: throw InvalidTokenException\n("유효하지 않은 토큰입니다")
Controller --> [: 401 Unauthorized\n{"error": "유효하지 않은 토큰입니다"}
^^^^^
Syntax Error? (Assumed diagram type: sequence)
Binary file not shown.

After

Width:  |  Height:  |  Size: 79 KiB

@@ -0,0 +1,32 @@
[From string (line 49) ]
@startuml user-로그인
...
... ( skipping 195 lines )
...
activate AuthService
== 1단계: 사용자 조회 ==
AuthService -> Service: findByPhoneNumber(phoneNumber)
activate Service
Service -> UserRepo: findByPhoneNumber(phoneNumber)
activate UserRepo
UserRepo -> UserDB: SELECT user_id, password_hash,\nrole, name, email\nFROM users\nWHERE phone_number = ?
activate UserDB
UserDB --> UserRepo: 사용자 정보 또는 NULL
deactivate UserDB
UserRepo --> Service: Optional<User>
deactivate UserRepo
Service --> AuthService: Optional<User>
deactivate Service
alt 사용자 없음
AuthService --> Controller: throw AuthenticationFailedException\n("전화번호 또는 비밀번호를 확인해주세요")
Controller --> [: 401 Unauthorized\n{"error": "전화번호 또는 비밀번호를\n확인해주세요"}
^^^^^
Syntax Error? (Assumed diagram type: sequence)
Binary file not shown.

After

Width:  |  Height:  |  Size: 105 KiB

@@ -0,0 +1,32 @@
[From string (line 45) ]
@startuml user-프로필수정
...
... ( skipping 191 lines )
...
Controller -> Controller: @Valid 어노테이션 검증\n(이메일 형식, 필드 길이 등)
Controller -> Service: updateProfile(userId, UpdateProfileRequest)
activate Service
== 1단계: 기존 사용자 정보 조회 ==
Service -> UserRepo: findById(userId)
activate UserRepo
UserRepo -> UserDB: SELECT * FROM users\nWHERE user_id = ?
activate UserDB
UserDB --> UserRepo: 사용자 정보
deactivate UserDB
UserRepo --> Service: User 엔티티
deactivate UserRepo
alt 사용자 없음
Service --> Controller: throw UserNotFoundException\n("사용자를 찾을 수 없습니다")
Controller --> [: 404 Not Found\n{"error": "사용자를 찾을 수 없습니다"}
^^^^^
Syntax Error? (Assumed diagram type: sequence)
Binary file not shown.

After

Width:  |  Height:  |  Size: 147 KiB

@@ -0,0 +1,32 @@
[From string (line 47) ]
@startuml user-회원가입
...
... ( skipping 193 lines )
...
Controller -> Controller: @Valid 어노테이션 검증\n(이메일 형식, 비밀번호 8자 이상 등)
Controller -> Service: register(RegisterRequest)
activate Service
== 1단계: 중복 사용자 확인 ==
Service -> UserRepo: findByPhoneNumber(phoneNumber)
activate UserRepo
UserRepo -> UserDB: SELECT * FROM users\nWHERE phone_number = ?
activate UserDB
UserDB --> UserRepo: 조회 결과
deactivate UserDB
UserRepo --> Service: Optional<User>
deactivate UserRepo
alt 중복 사용자 존재
Service --> Controller: throw DuplicateUserException\n("이미 가입된 전화번호입니다")
Controller --> [: 400 Bad Request\n{"error": "이미 가입된 전화번호입니다"}
^^^^^
Syntax Error? (Assumed diagram type: sequence)
Binary file not shown.

After

Width:  |  Height:  |  Size: 168 KiB

@@ -0,0 +1,30 @@
✅ design/backend/sequence/inner/ai-트렌드분석및추천.puml - HTTP 200
✅ design/backend/sequence/inner/analytics-대시보드조회-캐시미스.puml - HTTP 200
✅ design/backend/sequence/inner/analytics-대시보드조회-캐시히트.puml - HTTP 200
✅ design/backend/sequence/inner/analytics-배포완료구독.puml - HTTP 200
✅ design/backend/sequence/inner/analytics-이벤트생성구독.puml - HTTP 200
✅ design/backend/sequence/inner/analytics-참여자등록구독.puml - HTTP 200
✅ design/backend/sequence/inner/content-이미지생성.puml - HTTP 200
✅ design/backend/sequence/inner/distribution-다중채널배포.puml - HTTP 200
✅ design/backend/sequence/inner/distribution-배포상태조회.puml - HTTP 200
✅ design/backend/sequence/inner/event-AI추천요청.puml - HTTP 200
✅ design/backend/sequence/inner/event-목록조회.puml - HTTP 200
✅ design/backend/sequence/inner/event-목적선택.puml - HTTP 200
✅ design/backend/sequence/inner/event-상세조회.puml - HTTP 200
✅ design/backend/sequence/inner/event-콘텐츠선택.puml - HTTP 200
✅ design/backend/sequence/inner/event-대시보드조회.puml - HTTP 200
✅ design/backend/sequence/inner/event-추천결과조회.puml - HTTP 200
✅ design/backend/sequence/inner/event-이미지결과조회.puml - HTTP 200
✅ design/backend/sequence/inner/event-이미지생성요청.puml - HTTP 200
✅ design/backend/sequence/inner/event-최종승인및배포.puml - HTTP 200
✅ design/backend/sequence/inner/participation-당첨자추첨.puml - HTTP 200
✅ design/backend/sequence/inner/participation-이벤트참여.puml - HTTP 200
✅ design/backend/sequence/inner/participation-참여자목록조회.puml - HTTP 200
✅ design/backend/sequence/inner/user-로그인.puml - HTTP 200
✅ design/backend/sequence/inner/user-로그아웃.puml - HTTP 200
✅ design/backend/sequence/inner/user-회원가입.puml - HTTP 200
✅ design/backend/sequence/inner/user-프로필수정.puml - HTTP 200
✅ design/backend/sequence/outer/고객참여플로우.puml - HTTP 200
✅ design/backend/sequence/outer/성과분석플로우.puml - HTTP 200
✅ design/backend/sequence/outer/사용자인증플로우.puml - HTTP 200
✅ design/backend/sequence/outer/이벤트생성플로우.puml - HTTP 200
Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 119 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 161 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 178 KiB

@@ -0,0 +1,32 @@
[From string (line 110) ]
@startuml 이벤트생성플로우
...
... ( skipping 256 lines )
...
Event --> Gateway: 200 OK
Gateway --> FE: 저장 완료
FE --> User: 콘텐츠 생성 화면으로 이동
== 3. SNS 이미지 생성 - 비동기 처리 (UFR-CONT-010) ==
User -> FE: 이미지 생성 요청
FE -> Gateway: POST /contents/images\n{eventDraftId, 이벤트정보}
Gateway -> Event: 이미지 생성 요청
Event -> Kafka: Publish to image-job-topic\n{jobId, eventDraftId, 이벤트정보}
Event --> Gateway: Job 생성 완료\n{jobId, status: PENDING}
Gateway --> FE: 202 Accepted\n{jobId}
FE --> User: "이미지 생성 중..." (로딩)
note over Content: Kafka Consumer\nimage-job-topic 구독
Kafka --> Content: Consume Job Message\n{jobId, eventDraftId, ...}
par
Content -> ImageApi: 심플 스타일 생성 요청
ImageApi --> Content: 심플 이미지 URL
and
^^^^^
Syntax Error? (Assumed diagram type: sequence)
Binary file not shown.

After

Width:  |  Height:  |  Size: 188 KiB