1. ์ฌ์ฉ์ ๋จ๋ง ์ด๊ธฐํ ๋ฐ ์ธ์ฆ (user_authentication)
@startuml
title ์ฌ์ฉ์ ๋จ๋ง ์ด๊ธฐํ ๋ฐ ์ธ์ฆ ํ๋ฆ (๊ณตํต)
actor ์ฌ์ฉ์ as User
participant "GUI\n(Staff ๋๋ Manager)" as GUI
participant "Main Service" as Main
database "์ฌ์ฉ์ DB" as DB
== GUI ์คํ ๋ฐ ์๋ฒ ์ฐ๊ฒฐ ==
User -> GUI : ํ๋ก๊ทธ๋จ ์คํ
activate GUI
GUI -> Main : ์๋ฒ ์ฐ๊ฒฐ ์์ฒญ
activate Main
Main --> GUI : ์๋ฒ ์ฐ๊ฒฐ ์ฑ๊ณต ์๋ต
deactivate Main
alt ์๋ฒ ์ฐ๊ฒฐ์ด ์ฑ๊ณตํ ๊ฒฝ์ฐ
GUI -> GUI : ๋ก๊ทธ์ธ ํ๋ฉด ํ์
User -> GUI : ์์ด๋ ๋ฐ ๋น๋ฐ๋ฒํธ ์
๋ ฅ
GUI -> Main : ๋ก๊ทธ์ธ ์์ฒญ ์ ๋ฌ
activate Main
Main -> DB : ์ฌ์ฉ์ ์ ๋ณด ์กฐํ
activate DB
DB --> Main : ์ฌ์ฉ์ ์ ๋ณด ๋ฐํ (์ญํ , ์ธ์ฆ ์ ๋ณด ๋ฑ)
deactivate DB
Main -> Main : ๋น๋ฐ๋ฒํธ ๊ฒ์ฆ
alt ๋น๋ฐ๋ฒํธ๊ฐ ์ผ์นํ๋ ๊ฒฝ์ฐ
alt ์ฌ์ฉ์๊ฐ Staff์ธ ๊ฒฝ์ฐ
Main -> DB : GUI ๋ ์ด์์ ๋ฐ์ดํฐ ์กฐํ
activate DB
DB --> Main : ๋ ์ด์์ ๋ฐ์ดํฐ ๋ฐํ
deactivate DB
Main --> GUI : ๋ก๊ทธ์ธ ์ฑ๊ณต (์ญํ : Staff)
else ์ฌ์ฉ์๊ฐ Manager์ธ ๊ฒฝ์ฐ
Main -> DB : ๋์๋ณด๋ ๋ฐ์ดํฐ ์กฐํ
activate DB
DB --> Main : ๊ด๋ฆฌ์ ๋์๋ณด๋ ์ ๋ณด ๋ฐํ
deactivate DB
Main --> GUI : ๋ก๊ทธ์ธ ์ฑ๊ณต (์ญํ : Manager)
end
else ๋น๋ฐ๋ฒํธ๊ฐ ํ๋ฆฐ ๊ฒฝ์ฐ
Main --> GUI : ๋ก๊ทธ์ธ ์คํจ (์ฌ์ : ์ธ์ฆ ์คํจ)
end
deactivate Main
else ์๋ฒ ์ฐ๊ฒฐ์ด ์คํจํ ๊ฒฝ์ฐ
GUI -> GUI : ์ฐ๊ฒฐ ์คํจ ๋ฉ์์ง ํ์
end
deactivate GUI
@enduml
2. ์ฌ๊ณ ์กฐํ ๋ฐ ์์ฒญ (inventory_request_flow)
2-1. ์ํ ์ ๋ณด ์กฐํ
@startuml
title [IS] ์ํ ์ ๋ณด ์กฐํ ๋ฐ ์ฅ๋ฐ๊ตฌ๋ ๋ด๊ธฐ ํ๋ฆ
actor ์ฌ์ฉ์ as User
participant "Staff ์ ์ฉ GUI" as Staff
participant "Main Service" as Main
database "์ํ ๊ด๋ จ DB\n(QR์ฝ๋, ์ฌ๊ณ , ๋ชจ๋ธ, ์์น)" as DB
== QR ์ค์บ ๋ฐ ์ํ ์กฐํ ==
User -> Staff : QR์ฝ๋ ์ค์บ
activate Staff
Staff -> Staff : QR์ฝ๋ ๋ฐ์ดํฐ ํ์ฑ (์: QR20250430X001)
Staff -> Main : QR์ฝ๋ ๊ธฐ๋ฐ ์ํ ์กฐํ ์์ฒญ
activate Main
Main -> DB : ์ํ ์ ๋ณด, ์ฌ๊ณ , ์์น ์ ๋ณด ์กฐํ
activate DB
DB --> Main : ์ํ๋ช
, ์ฌ์ด์ฆ, ์์, ์ฌ๊ณ ์๋, ๋ณด๊ด ์์น ๋ฐํ
deactivate DB
Main --> Staff : ์ํ ์์ธ ์ ๋ณด ์๋ต
deactivate Main
Staff -> Staff : ํ๋ฉด์ ์ํ ์ ๋ณด ํ์
== ์ฅ๋ฐ๊ตฌ๋ ๋ด๊ธฐ ==
User -> Staff : "์ฅ๋ฐ๊ตฌ๋ ๋ด๊ธฐ" ์ ํ
Staff -> Staff : ์ฅ๋ฐ๊ตฌ๋ ๋ชฉ๋ก์ ํญ๋ชฉ ์ถ๊ฐ
Staff -> Staff : ์ฅ๋ฐ๊ตฌ๋ UI ๊ฐฑ์
deactivate Staff
@enduml
2-2. ์ํ ์์ฒญ
@startuml
title [๋ฐฐ์ก] ๋ก๋ด์ ํตํ ์ฌ๊ณ ํฝ์
๋ฐ ์๋ต ํ๋ฆ (์์ ๋จ)
actor ์ฌ์ฉ์ as User
participant "Staff GUI" as GUI
participant "Main Service" as Main
participant "Mobile Controller" as Robot
database "RosCars DB\n(์์
, ๋ฐฐ์ก, ์ ๋ฐ ๋ชจ๋ธ, ์์น)" as DB
== ์ฌ๊ณ ์์ฒญ ์์ ==
User -> GUI : "๋ฐฐ์ก ์์ฒญ" ๋ฒํผ ํด๋ฆญ
activate GUI
GUI -> Main : ์ฌ๊ณ ์์ฒญ ์ ๋ฌ (์ํ ๋ชฉ๋ก ํฌํจ)
activate Main
note right of Main
์์:
- ๋์ดํค 101 ๋ชจ๋ธ, ์๋ 2๊ฐ, ์์น 1
- ๋์ดํค 103 ๋ชจ๋ธ, ์๋ 1๊ฐ, ์์น 2
end note
Main -> DB : ์๋ก์ด ๋ฐฐ์ก ์์ฒญ ์์ฑ (์ํ: ์ค๋น ์ค)
activate DB
DB --> Main : ์์ฑ๋ ๋ฐฐ์ก ID ๋ฐํ (์: DEL-501)
deactivate DB
== ๋ฐฐ์ก ์์
์์ฑ ==
loop ์ํ ๋ชฉ๋ก ๋ฐ๋ณต
loop ์๋๋งํผ ๋ฐ๋ณต
Main -> DB : ๋ฐฐ์ก ์์
(Task) ์ ๋ณด ์์ฒญ (๋ฐฐ์ก ID ํฌํจ)
activate DB
DB --> Main : ์์
ID ๋ฐํ
deactivate DB
end
end
== ๋ก๋ด ๋ช
๋ น ์ ๋ฌ ๋ฐ ์ด๋ ==
Main -> Robot : ํฝ์
๋ช
๋ น ์ ์ก (๋ฐฐ์ก ID, ์์
ID ๋ชฉ๋ก ํฌํจ)
activate Robot
Robot -> DB : ๊ฒฝ๋ก ์ด๋ ๋ฐ ์ฌ๊ณ ์ ๋ณด ์
๋ฐ์ดํธ
activate DB
DB --> Robot : ์
๋ฐ์ดํธ ์๋ฃ ์๋ต
deactivate DB
Robot -> Main : ๋์ฐฉ ๋ณด๊ณ (๋ฐฐ์ก ์๋ฃ ์ํ ์ ๋ฌ)
deactivate Robot
== ์๋ต ๋ฐ UI ์ฒ๋ฆฌ ==
Main --> GUI : ๋ฐฐ์ก ์๋ต ์ ์ก (๋ฐฐ์ก ID, ์์
์ํ ํฌํจ)
deactivate Main
GUI -> GUI : ๋ฐฐ์ก ์ํ ํ์ (์: ๋ฐฐ์ก์ค)
GUI -> GUI : ์ฅ๋ฐ๊ตฌ๋ ๋น์ฐ๊ธฐ ๋ฐ UI ๊ฐฑ์
deactivate GUI
@enduml
3. ์์
์์ฑ ๋ฐ ๋ก๋ด ํ ๋น (task_assignment_flow)
@startuml
title [๋ฐฐ์ก] ์์
์์ฑ ๋ฐ ๋ก๋ด ํ ๋น ํ๋ฆ
actor ์ฌ์ฉ์ as User
participant "Staff GUI" as Staff
participant "Main Service" as Main
participant "Mobile Controller" as Mobile
database "RosCars DB\n(Task, Delivery, RosCars)" as DB
== ์์
์์ฒญ ์์ ==
User -> Staff : "์์
์์ฒญ" ํด๋ฆญ
activate Staff
Staff -> Main : ์์
์์ฑ ์์ฒญ (์์ดํ
, ์ถ๋ฐ์ง, ๋์ฐฉ์ง ํฌํจ)
deactivate Staff
activate Main
Main -> DB : ๋ฐฐ์ก ๋ฐ ์์
์ ๋ณด ๋ฑ๋ก (์ํ: ๋๊ธฐ ์ค)
activate DB
DB --> Main : ๋ฐฐ์ก ID, ์์
ID ๋ฐํ
deactivate DB
== ๋ก๋ด ํ ๋น ==
Main -> DB : ๋๊ธฐ ์ค์ธ ๋ก๋ด ์กฐํ
activate DB
DB --> Main : ์ฌ์ฉ ๊ฐ๋ฅ ๋ก๋ด ๋ชฉ๋ก ๋ฐํ (์: RB01, RB02)
deactivate DB
Main -> Main : ์ต์ ๋ก๋ด ์ ์ (์: RB01)
Main -> Mobile : ์์
ํ ๋น ์์ฒญ (์์
ID, ๊ฒฝ๋ก ์ ๋ณด ํฌํจ)
activate Mobile
Mobile -> Main : ์์
์๋ฝ ์ฌ๋ถ ์๋ต
alt ๋ก๋ด์ด ์์
์๋ฝํ ๊ฒฝ์ฐ
Main -> DB : ์์
๋ฐ ๋ฐฐ์ก ์ํ ๊ฐฑ์ (์งํ ์ค)
activate DB
DB --> Main : ์๋ฃ
deactivate DB
else ๋ก๋ด์ด ์๋ฝ ๊ฑฐ๋ถํ ๊ฒฝ์ฐ
Main -> Main : ์ฌํ ๋น ์๋ ๋๋ ๋๊ธฐ์ด ๋ฑ๋ก
end
deactivate Mobile
== ์์
์งํ ์ค ==
loop ์์
์งํ ์ค ๋ฐ๋ณต
Mobile -> Main : ์์
์์น ๋ฐ ์งํ๋ฅ ์
๋ฐ์ดํธ
Main -> DB : ์์
์ ๋ณด ๊ฐฑ์
end
== ์ ๋ฐ ์ ์ง ์์ฒญ ๋ฐ ์ฒ๋ฆฌ ==
Mobile -> Main : ์ ๋ฐ ์ ์ง ์์ฒญ (์์
ID, ์์น)
Main -> Mobile : ์ ๋ฐ ์ ์ง ๋ช
๋ น ์ ๋ฌ (๋ชฉํ ์์น, ํ์ฉ ์ค์ฐจ ํฌํจ)
Mobile -> Mobile : ์ ๋ฐ ์ ์ง ์ ์ด ์ํ
alt ์ ๋ฐ ์ ์ง ์ฑ๊ณต
Mobile -> Main : ์ ๋ฐ ์ ์ง ์ฑ๊ณต ์๋ต
else ์ ๋ฐ ์ ์ง ์คํจ
Mobile -> Main : ์ ๋ฐ ์ ์ง ์คํจ ์๋ต (ํธ์ฐจ ํฌํจ)
Main -> Main : ์์ธ ์ฒ๋ฆฌ ๋๋ ์๋ ๊ฐ์
๋ก์ง ์คํ
end
== ์์
์๋ฃ ์ฒ๋ฆฌ ==
Mobile -> Main : ์์
์๋ฃ ๋ณด๊ณ (์ฑ๊ณต ์ฌ๋ถ ํฌํจ)
Main -> DB : ์์
๋ฐ ๋ฐฐ์ก ์ํ ์๋ฃ๋ก ๊ฐฑ์ , ์๋ฃ ์๊ฐ ์ ์ฅ
DB --> Main : ์ ์ฅ ์๋ฃ
Main --> Staff : ์์
์์ฑ ๊ฒฐ๊ณผ ์๋ต (์์
ID, ์ฑ๊ณต ์ฌ๋ถ)
deactivate Main
@enduml
4. ๋ก๋ด ์ํ ๋ชจ๋ํฐ๋ง ๋ฐ ๊ด๋ฆฌ (roscar_monitoring_and_management)
@startuml
title [๊ด๋ฆฌ์ ๊ธฐ๋ฅ] ๋ก๋ด ์ํ ํ์ธ / ๋ฑ๋ก / ์ญ์ ๋ฐ ์์น ์ค์๊ฐ ํ์ธ
actor ๊ด๋ฆฌ์ as Manager
participant "Manager GUI" as GUI
participant "Main Service" as Main
participant "Mobile Controller" as Mobile
database "RosCars DB" as DB
== ๋ก๋ด ์ํ ํ์ธ, ๋ฑ๋ก, ์ญ์ ์์ฒญ ==
Manager -> GUI : ๋ฉ๋ด ํด๋ฆญ ๋๋ ์ ๋ณด ์
๋ ฅ
activate GUI
GUI -> Main : ์์ฒญ ์ ์ก (์ข
๋ฅ ๋ฐ ๋ฐ์ดํฐ ํฌํจ)
deactivate GUI
activate Main
alt ์ํ ํ์ธ ์์ฒญ์ธ ๊ฒฝ์ฐ
Main -> Mobile : ๋ก๋ด ์ํ ์์ฒญ (๋ก๋ด ID)
activate Mobile
Mobile --> Main : ๋ก๋ด ์ํ ์ ๋ณด ์๋ต
deactivate Mobile
Main --> GUI : ์ํ ์ ๋ณด ์ ๋ฌ
elseif ๋ฑ๋ก ์์ฒญ์ธ ๊ฒฝ์ฐ
Main -> DB : ๋ก๋ด ์ ๋ณด ๋ฑ๋ก
activate DB
DB --> Main : ๋ฑ๋ก ์๋ฃ
deactivate DB
Main --> GUI : ๋ฑ๋ก ๊ฒฐ๊ณผ ์๋ต (์ฑ๊ณต)
elseif ์ญ์ ์์ฒญ์ธ ๊ฒฝ์ฐ
Main -> DB : ๋ก๋ด ์ ๋ณด ์ญ์
activate DB
DB --> Main : ์ญ์ ์๋ฃ
deactivate DB
Main --> GUI : ์ญ์ ๊ฒฐ๊ณผ ์๋ต (์ฑ๊ณต)
end
deactivate Main
== ๋ก๋ด ์์น ์ค์๊ฐ ํ์ธ ==
Manager -> GUI : ์์น ํ์ธ ํญ ํด๋ฆญ
loop ์ผ์ ์ฃผ๊ธฐ ๋ฐ๋ณต (์: 5์ด๋ง๋ค)
GUI -> Main : ๋ก๋ด ์์น ์์ฒญ (๋ก๋ด ID)
activate Main
Main -> Mobile : ํ์ฌ ์์น ์์ฒญ
activate Mobile
Mobile --> Main : ์์น ์ ๋ณด ์๋ต (X, Y, Z ์ขํ)
deactivate Mobile
Main --> GUI : ์์น ์ ๋ณด ์ ๋ฌ
deactivate Main
end
@enduml
5. ๋ก๊ทธ ๋ฐ ๊ธฐ๋ก ์กฐํ ํ๋ฆ (log_and_audit_flow)
@startuml
title [๊ด๋ฆฌ์ ๊ธฐ๋ฅ] ๋ก๊ทธ ๋ฐ ๊ธฐ๋ก ์กฐํ ํ๋ฆ
actor ๊ด๋ฆฌ์ as Manager
participant "Manager GUI" as GUI
participant "Main Service" as Main
database "Log DB\n(์์
, ์ฌ๊ณ , ๋ก๋ด, ์ถ๊ณ ๋ก๊ทธ ํฌํจ)" as DB
loop ๋ก๊ทธ ํญ ํด๋ฆญ ์๋ง๋ค
Manager -> GUI : ๋ก๊ทธ ํญ ์ ํ (์: ์์
/์ฌ๊ณ /๋ก๋ด/์ถ๊ณ )
activate GUI
GUI -> Main : ๋ก๊ทธ ์กฐํ ์์ฒญ (์ข
๋ฅ, ๊ธฐ๊ฐ, ํค์๋ ๋ฑ)
deactivate GUI
activate Main
Main -> DB : ๋ก๊ทธ ๋ฐ์ดํฐ ๊ฒ์ ์์ฒญ (์กฐ๊ฑด: ๊ธฐ๊ฐ, ์ข
๋ฅ, ํค์๋)
activate DB
DB --> Main : ๋ก๊ทธ ๊ฒฐ๊ณผ ๋ฐํ (์: 12๊ฑด)
deactivate DB
Main --> GUI : ๋ก๊ทธ ์กฐํ ์๋ต ์ ๋ฌ (๋ก๊ทธ ์ข
๋ฅ ๋ฐ ๊ฑด์ ํฌํจ)
deactivate Main
activate GUI
GUI -> GUI : ๋ก๊ทธ ํ
์ด๋ธ ์๊ฐํ ๋ฐ ํ์
deactivate GUI
end
note right of DB
์์ ๋ก๊ทธ ๋ฐ์ดํฐ:
[์์
๋ก๊ทธ]
- TASK-1001 : ์์
์ทจ์๋จ
- TASK-1010 : ์์
์ทจ์๋จ
[๋ก๋ด ์ด๋ฒคํธ]
- RB-01 : ๋น์ ์ ์ง
- RB-03 : ์ถฉ๋ ํํผ
end note
@enduml
6. ๋ก๋ด ์ผ์ ๋ฐ ์ํ ๋ณด๊ณ ํ๋ฆ (sensor_and_state_reporting)
@startuml
title [๋ก๋ด] ์ผ์ ๋ฐ ์ํ ๋ณด๊ณ ํ๋ฆ
participant "Mobile Controller" as Mobile
participant "Main Service" as Main
participant "Staff PC" as StaffPC
participant "Manager PC" as ManagerPC
database "roscar_status_log\n(๋ก๋ด ์ํ ๊ธฐ๋ก DB)" as DB
== ๋ก๋ด ์ํ ๋ณด๊ณ ==
activate Mobile
Mobile -> Main : ์ผ์ ๋ฐ ์ํ ์ ๋ณด ์ ์ก\n(๋ก๋ด ID, ๋ฐฐํฐ๋ฆฌ, ์ํ, ์ผ์, ์๋ ฅ ๋ฑ)
deactivate Mobile
activate Main
Main -> Main : ๋ด๋ถ ์ํ ์ ๋ณด ๊ฐฑ์ ์ฒ๋ฆฌ
Main -> DB : ๋ก๋ด ์ํ ๊ธฐ๋ก ์์ฒญ (๋ก๊ทธ ์ ์ฅ)
activate DB
DB --> Main : ์ ์ฅ ์๋ฃ
deactivate DB
== ์ํ ์ ํ ==
Main -> StaffPC : ๋ก๋ด ์ํ ์ ๋ณด ์ ์ก (TCP ๋ฐฉ์)\n์: ๋ฐฐํฐ๋ฆฌ, ์ฃผํ ์ํ, ์๋ ฅ
Main -> ManagerPC : ์ผ์ ๋ฐ ์์น ์ ๋ณด ์ ์ก (ROS2 ๋ฐฉ์)\n์: ์ผ์ ์ ์, ์์น ์ขํ
deactivate Main
note right of DB
์์ ๋ณด๊ณ ๋ด์ฉ:
- ๋ก๋ด ID: RB02
- ์์
ID: TASK-101
- ๋ฐฐํฐ๋ฆฌ: 72%
- ์ํ: ์ฃผํ ์ค (DRIVING)
- ์ผ์ ์ํ: ์ ์ (OK)
- ๋ณด๊ณ ์๊ฐ: 14:03:22
end note
@enduml
7. AI ๊ธฐ๋ฐ ์ธ์ ๋ฐ ์ถ๋ก ํ๋ฆ (ai_perception_pipeline)
@startuml
title [AI ๊ธฐ๋ฅ] ์ธ์ ๋ฐ ์ถ๋ก ์ฒ๋ฆฌ ํ๋ฆ
participant "Video Sender" as Video
participant "Object Detector" as Detector
participant "AI Module" as AI
participant "Main Service" as Main
database "InferenceResult DB" as DB
== ํ๋ ์ ์์ ๋ฐ ๋ถ์ ์์ฒญ ==
activate Video
Video -> Detector : ์์ ํ๋ ์ ์์ (๋ก๋ด ID, ํ๋ ์ ID, ์๊ฐ ํฌํจ)
deactivate Video
activate Detector
Detector -> AI : ํ๋ ์ ๋ถ์ ์์ฒญ
deactivate Detector
== AI ์ถ๋ก ๋ฐ ๊ฒฐ๊ณผ ์ ๋ฌ ==
activate AI
AI -> AI : YOLOv8 ์ถ๋ก ์ํ
AI --> Detector : ์ธ์ ๊ฒฐ๊ณผ ๋ฐํ (์: ์ฌ๋, 91%)
deactivate AI
== ๊ฒฐ๊ณผ ์ ์ก ๋ฐ ํ๋จ ==
activate Detector
Detector -> Main : ์ธ์ ๊ฒฐ๊ณผ ์ ๋ฌ (๊ฐ์ฒด, ์ ๋ขฐ๋, ์์น ํฌํจ)
deactivate Detector
activate Main
Main -> Main : ๊ฐ์ฒด ๊ธฐ๋ฐ ์ํฉ ํ๋จ
alt ๊ฐ์ฒด๊ฐ ์ฌ๋์ผ ๊ฒฝ์ฐ
Main -> MobileController : ๊ธด๊ธ ์ ์ง ์์ฒญ
else ๊ฐ์ฒด๊ฐ ํ์
๋ก๋ด์ผ ๊ฒฝ์ฐ
Main -> MobileController : ์ผ์ ์ ์ง ์์ฒญ
else ๊ธฐํ ๊ฐ์ฒด
Main -> Main : ์์
์ํ ๊ฐฑ์
end
Main -> DB : ์ธ์ ๊ฒฐ๊ณผ ์ ์ฅ
deactivate Main
@enduml
8. ๋ก๋ด ์ ์ด ๋ฐ ๋์ ํ๋ฆ (roscar_control_and_motor_flow)
@startuml
title [๋ก๋ด] ์ ์ด ๋ฐ ๋์ ์ฒ๋ฆฌ ํ๋ฆ
participant "Main Service" as Main
participant "Mobile Controller" as Mobile
participant "Motor Controller" as Motor
participant "Staff PC" as Staff
participant "Manager PC" as Manager
== ์ด๋ ๋ช
๋ น ์์ ==
activate Main
Main -> Mobile : ๋ก๋ด ์ด๋ ๋ช
๋ น ์ ์ก (๋ก๋ด ID, ๋ชฉ์ ์ง, ์๋)
deactivate Main
activate Mobile
Mobile -> Motor : ๊ฒฝ๋ก ์ด๋ ๋ช
๋ น ์คํ (์ด๋ ๊ฒฝ๋ก ํฌํจ)
deactivate Mobile
== ์ด๋ ์ค ์ฅ์ ๋ฌผ ๊ฐ์ง ==
loop ์ด๋ ์ค ๋ฐ๋ณต ๊ฐ์
activate Motor
Motor -> Mobile : ์ฅ์ ๋ฌผ ๊ฐ์ง ์๋ฆผ (๊ฑฐ๋ฆฌ, ๋ฐฉํฅ)
deactivate Motor
activate Mobile
Mobile -> Main : ์ฅ์ ๋ฌผ ์ํฉ ๋ณด๊ณ (๋ก๋ด ID, ๊ฑฐ๋ฆฌ, ๋ฐฉํฅ)
deactivate Mobile
activate Main
Main -> Mobile : ํํผ ๋ช
๋ น ์ ์ก (ํ์ ๋ฐฉํฅ ๋ฑ)
deactivate Main
activate Mobile
Mobile -> Motor : ํํผ ๋์ ์คํ ์์ฒญ
deactivate Mobile
end
== ์ด๋ ์๋ฃ ๋ฐ ํผ๋๋ฐฑ ์ฒ๋ฆฌ ==
activate Motor
Motor -> Mobile : ์ด๋ ๊ฒฐ๊ณผ ๋ฐ ์์น ํผ๋๋ฐฑ ์ ์ก
deactivate Motor
activate Mobile
Mobile -> Main : ๋ช
๋ น ์คํ ๊ฒฐ๊ณผ ๋ณด๊ณ (๋ก๋ด ID, ์ฑ๊ณต ์ฌ๋ถ)
deactivate Mobile
== ๊ฒฐ๊ณผ ์ฒ๋ฆฌ ==
activate Main
alt ์ด๋์ด ์ฑ๊ณตํ ๊ฒฝ์ฐ
Main -> Main : ์ํ ๊ฐฑ์ ๋ฐ ์๋ฃ ์ฒ๋ฆฌ
else ์ด๋์ด ์คํจํ ๊ฒฝ์ฐ
par Manager ๋ฐ Staff์๊ฒ ์๋ฌ ๋ณด๊ณ
Main -> Manager : ์๋ฌ ์ ๋ณด ์ ์ก (๋ก๋ด ID, ์ค๋ฅ ๋ด์ฉ, ์๊ฐ)
Main -> Staff : ์๋ฌ ์ ๋ณด ์ ์ก (๋ก๋ด ID, ์ค๋ฅ ๋ด์ฉ, ์๊ฐ)
end
end
deactivate Main
@enduml
9. ์ฌ๊ณ ํ์
๋ชจ๋ ๋ฐ ์๋ ๊ฒ์ ๊ธฐ๋ฅ (inventory_verification_mode)
@startuml
title [๊ด๋ฆฌ์ ๊ธฐ๋ฅ] ์ฌ๊ณ ํ์
๋ชจ๋ ๋ฐ ์๋ ๊ฒ์ ํ๋ฆ
actor ๊ด๋ฆฌ์ as Manager
participant "Manager GUI" as GUI
participant "Main Service" as Main
participant "Mobile Controller" as Mobile
database "Inventory DB\n(QR์ฝ๋, ์ฌ๊ณ , ์ ๋ฐ ๋ชจ๋ธ, ๋ก๊ทธ ํฌํจ)" as DB
== ์ฌ๊ณ ํ์
๋ชจ๋ ์์ ==
Manager -> GUI : [์ฌ๊ณ ํ์
๋ชจ๋ ์คํ] ํด๋ฆญ
activate GUI
GUI -> Main : ์ฌ๊ณ ํ์
๋ชจ๋ ์์ ์์ฒญ (๊ด๋ฆฌ์ ID ํฌํจ)
deactivate GUI
activate Main
Main -> Mobile : ์๋ ์ฌ๊ณ ์ค์บ ๋ช
๋ น ์ ์ก (๋ชจ๋: AUTO_SCAN)
deactivate Main
== ๋ก๋ด์ ์ค์บ ๋ฐ ์กฐํ ==
activate Mobile
Mobile -> Mobile : QR ๋๋ ArUco ๋ง์ปค ์ค์บ ์ํ
Mobile -> DB : ์ํ ์ ๋ณด ์กฐํ ์์ฒญ (์ค์บ๋ ์ฝ๋ ๊ธฐ๋ฐ)
activate DB
DB --> Mobile : ์ํ๋ช
, ์ฌ์ด์ฆ, ์๋, ๋ณด๊ด ์์น ๋ฑ ์๋ต
deactivate DB
Mobile -> DB : ์ฌ๊ณ ์ด๋ฒคํธ ๊ธฐ๋ก (์ค์บ ๊ฒฐ๊ณผ ์ ์ฅ)
activate DB
DB --> Mobile : ๊ธฐ๋ก ์๋ฃ
deactivate DB
Mobile -> Main : ์ฌ๊ณ ์ค์บ ๊ฒฐ๊ณผ ์ ๋ฌ (์ํ ์์ธ ์ ๋ณด ํฌํจ)
deactivate Mobile
== ๊ฒฐ๊ณผ ํ์ ==
activate Main
Main -> GUI : ์ค์บ ๊ฒฐ๊ณผ ์๋ต ์ ๋ฌ (ํ๋ฉด์ ํ์ํ ์ ๋ณด ํฌํจ)
deactivate Main
@enduml