@startuml Converter CLI
queue "AWS SQS" as queue order 20
actor "User" as user order 10
database "AWS S3" as s3_storage order 15
participant "API Server" as api_server order 50
box "Docker Container" #LightBlue
participant "Go Service" as go_cli order 30 #99FF99
participant "Python CLI" as python_cli order 40 #99FF99
database "Local Storage" as local_storage order 35
end box
autonumber
go_cli -> queue: Listen Notification Queue
user -> s3_storage: Upload Dataset
queue <- s3_storage: Send Notification
go_cli <- queue: Receive Notification
go_cli -> local_storage: Create /tmp folder
go_cli <- s3_storage: Download Origin Dataset
go_cli -> local_storage: Save Dataset to /tmp folder
go_cli -> python_cli: Execute CLI command
python_cli -[#0000FF]> local_storage: Save Progress Number to /tmp folder
go_cli -> api_server: Upload Convert Progress
python_cli -[#0000FF]> local_storage: Save output.zip and dataset.yml to /tmp
go_cli -> api_server: Upload dataset type and class number
go_cli -> s3_storage: Upload output.zip to S3
go_cli -> api_server: Upload Status to Success
go_cli -> queue: Remove Notification
@enduml