sandbox/ivideon/puml/Crowd/cl_entites_structure.puml

101 lines
No EOL
2.2 KiB
Text

@startuml Entity Structures
!define ENTITY class
!define COLLECTION database
title Структура сущностей для Crowd Reports Sources
package "Cameras" {
ENTITY Camera_Entity {
+id: "server_id:camera_index"
+server_id: string
+camera_index: string
+name: string
+owner_id: string
}
COLLECTION servers_collection {
_id: ObjectId (server_id)
owner_id: string
name: string
cameras: {
"0": {name: "Камера 1", active: true},
"1": {name: "Камера 2", active: true}
}
cam_services: {
"0": {crowd: {active: true}},
"1": {crowd: {active: true}}
}
}
}
package "Folders" {
ENTITY Folder_Entity {
+id: ObjectId (folder_id)
+name: string
+owner_id: string
+parents: List[string]
+objects: List[object_info]
}
COLLECTION folders_collection {
_id: ObjectId (folder_id)
owner_id: string
name: string
parents: []
objects: [
{object_type: "camera", object_id: "server:0"},
{object_type: "camera", object_id: "server:1"}
]
}
}
package "Detection Zones" {
ENTITY Zone_Entity {
+id: string (zone_id)
+camera_id: "server_id:camera_index"
+owner_id: string
+name: string
+polygon: List[coordinates]
}
COLLECTION zones_collection {
_id: string (zone_id)
owner_id: string
camera_id: "server_id:camera_index"
name: string
polygon: [...]
deleted: false
}
}
' Relationships
Camera_Entity --> servers_collection : stored in
Folder_Entity --> folders_collection : stored in
Zone_Entity --> zones_collection : stored in
servers_collection --> zones_collection : "camera_id links"
folders_collection --> servers_collection : "contains camera references"
note right of Camera_Entity
ID составляется из:
server_id + ":" + camera_index
Пример:
"507f1f77bcf86cd799439011:0"
end note
note right of Folder_Entity
objects[] может содержать:
- cameras
- другие folders (вложенность)
- другие типы объектов
end note
note right of Zone_Entity
Каждая зона привязана
к конкретной камере через
camera_id поле
end note
@enduml