@startuml !theme mono title 검증 완료 내부 시퀀스 participant "API Gateway<>" as Gateway participant "MeetingController" as Controller participant "MeetingService" as Service participant "Meeting" as Domain participant "ValidationService" as ValidationService participant "MeetingRepository" as Repository database "PostgreSQL<>" as DB database "Redis Cache<>" as Cache queue "Event Hub<>" as EventHub Gateway -> Controller: POST /api/meetings/{id}/validate activate Controller Controller -> Service: validateMeeting(meetingId) activate Service Service -> Repository: findById(meetingId) activate Repository Repository -> DB: SELECT * FROM meetings WHERE id = ? activate DB DB --> Repository: meeting_row deactivate DB Repository --> Service: Meeting entity deactivate Repository Service -> ValidationService: performValidation(meeting) activate ValidationService ValidationService -> ValidationService: validateStructure() note right of ValidationService 구조 검증: - 필수 섹션 존재 - 섹션 순서 - 데이터 완정성 end note ValidationService -> ValidationService: validateContent() note right of ValidationService 내용 검증: - 필수 항목 기입 - 형식 준수 - 참조 무결성 end note ValidationService -> ValidationService: validateBusiness() note right of ValidationService 비즈니스 규칙: - 참석자 서명 - Todo 할당 완료 - 첨부파일 검증 end note ValidationService --> Service: ValidationResult deactivate ValidationService alt validation passed Service -> Domain: markAsValidated() activate Domain Domain -> Domain: changeStatus(VALIDATED) Domain --> Service: validated Meeting deactivate Domain Service -> Repository: save(meeting) activate Repository Repository -> DB: UPDATE meetings SET status = 'VALIDATED' activate DB DB --> Repository: affected_rows deactivate DB Repository --> Service: savedMeeting deactivate Repository Service -> Cache: set(meeting:{id}, meetingData) activate Cache Cache --> Service: OK deactivate Cache Service ->> EventHub: publish(MeetingValidatedEvent) activate EventHub note right of EventHub 검증 완료 이벤트: - 확정 가능 상태 알림 end note deactivate EventHub Service --> Controller: success response else validation failed Service --> Controller: error response with details end deactivate Service Controller --> Gateway: 200 OK / 400 Bad Request deactivate Controller @enduml