101 lines
No EOL
2.2 KiB
Text
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 |