@startuml 04-다중채널자동배포
!theme mono

title 유저플로우 04: 다중 채널 자동 배포

actor "소상공인" as Owner
participant "배포 관리 시스템" as DeploySystem
participant "우리동네TV API" as UDTV
participant "링고비즈 API" as Lingo
participant "지니TV 광고 API" as GenieTV
participant "SNS API" as SNS
database "배포 이력 DB" as DeployDB

== 이벤트스토밍 요소 ==

note over Owner, DeployDB
**Command**: 다중채널배포시작, 우리동네TV배포, 링고비즈업데이트,
         지니TV광고예약, SNS포스팅, 오프라인자료생성
**Event**: 배포요청됨, 우리동네TV배포완료됨, 링고비즈연결음업데이트됨,
         지니TV광고노출시작됨, SNS자동포스팅완료됨, 오프라인자료다운로드가능해짐, 전체배포완료됨
**Actor**: 소상공인
**External System**: 우리동네TV, 링고비즈, 지니TV 광고 플랫폼, SNS API
**Policy**: 채널별 최적 송출 시간대 자동 선정, 예산 기반 노출량 자동 조절,
         배포 실패 시 자동 재시도 3회
end note

== 배포 설정 ==

Owner -> DeploySystem : **Command**: 다중채널배포시작\n(데이터: 콘텐츠ID, 선택채널목록, 배포일시)
activate DeploySystem
DeploySystem --> Owner : **Event**: 배포요청됨

== 우리동네TV 배포 ==

DeploySystem -> UDTV : **Command**: 우리동네TV배포\n(데이터: 반경 500m/1km, 송출시간대, 15초영상)
activate UDTV

note right of UDTV
**Policy**: 채널별 최적
송출 시간대 자동 선정
- 평일 저녁 6-9시
- 주말 점심 12-2시
- 지역 특성 반영
end note

UDTV --> DeploySystem : **Event**: 우리동네TV배포완료됨\n(데이터: 배포ID, 예상노출수)
deactivate UDTV

== 링고비즈 연결음 업데이트 ==

DeploySystem -> Lingo : **Command**: 링고비즈업데이트\n(데이터: 매장전화번호, 연결음파일)
activate Lingo

Lingo --> DeploySystem : **Event**: 링고비즈연결음업데이트됨\n(데이터: 업데이트완료시각)
deactivate Lingo

== 지니TV 광고 예약 ==

DeploySystem -> GenieTV : **Command**: 지니TV광고예약\n(데이터: 타겟지역, 노출시간대, 예산)
activate GenieTV

note right of GenieTV
**Policy**: 예산 기반
노출량 자동 조절
- 예산에 따른 노출 빈도
- 타겟 지역 최적화
- 시간대별 차등 과금
end note

GenieTV --> DeploySystem : **Event**: 지니TV광고노출시작됨\n(데이터: 광고ID, 노출스케줄)
deactivate GenieTV

== SNS 자동 포스팅 ==

par Instagram
    DeploySystem -> SNS : **Command**: SNS포스팅\n(플랫폼: Instagram, 예약시간)
    activate SNS
    SNS --> DeploySystem : 포스팅 완료
    deactivate SNS
else Naver Blog
    DeploySystem -> SNS : **Command**: SNS포스팅\n(플랫폼: Naver, 예약시간)
    activate SNS
    SNS --> DeploySystem : 포스팅 완료
    deactivate SNS
else Kakao Channel
    DeploySystem -> SNS : **Command**: SNS포스팅\n(플랫폼: Kakao, 예약시간)
    activate SNS
    SNS --> DeploySystem : 포스팅 완료
    deactivate SNS
end

DeploySystem --> DeploySystem : **Event**: SNS자동포스팅완료됨

== 오프라인 자료 생성 ==

DeploySystem -> DeploySystem : **Command**: 오프라인자료생성\n(데이터: QR포스터, 인쇄용PDF)
DeploySystem --> DeploySystem : **Event**: 오프라인자료다운로드가능해짐

== 배포 완료 및 이력 저장 ==

DeploySystem -> DeployDB : 배포 이력 저장
activate DeployDB
DeployDB --> DeploySystem : 저장 완료
deactivate DeployDB

DeploySystem --> Owner : **Event**: 전체배포완료됨\n(데이터: 배포채널목록, 예상도달수, 모니터링링크)

note over Owner
**원클릭 배포 완료 (1분 이내)**
- 우리동네TV: 반경 1km 노출
- 링고비즈: 연결음 업데이트
- 지니TV: 주변 가정 노출
- SNS: Instagram, Blog, Kakao
- 오프라인: QR 포스터 다운로드
- 다음: 실시간 효과 측정
end note

deactivate DeploySystem

@enduml