feat: Geutebruck GeViScope/GeViSoft Action Mapping System - MVP
This MVP release provides a complete full-stack solution for managing action mappings in Geutebruck's GeViScope and GeViSoft video surveillance systems. ## Features ### Flutter Web Application (Port 8081) - Modern, responsive UI for managing action mappings - Action picker dialog with full parameter configuration - Support for both GSC (GeViScope) and G-Core server actions - Consistent UI for input and output actions with edit/delete capabilities - Real-time action mapping creation, editing, and deletion - Server categorization (GSC: prefix for GeViScope, G-Core: prefix for G-Core servers) ### FastAPI REST Backend (Port 8000) - RESTful API for action mapping CRUD operations - Action template service with comprehensive action catalog (247 actions) - Server management (G-Core and GeViScope servers) - Configuration tree reading and writing - JWT authentication with role-based access control - PostgreSQL database integration ### C# SDK Bridge (gRPC, Port 50051) - Native integration with GeViSoft SDK (GeViProcAPINET_4_0.dll) - Action mapping creation with correct binary format - Support for GSC and G-Core action types - Proper Camera parameter inclusion in action strings (fixes CrossSwitch bug) - Action ID lookup table with server-specific action IDs - Configuration reading/writing via SetupClient ## Bug Fixes - **CrossSwitch Bug**: GSC and G-Core actions now correctly display camera/PTZ head parameters in GeViSet - Action strings now include Camera parameter: `@ PanLeft (Comment: "", Camera: 101028)` - Proper filter flags and VideoInput=0 for action mappings - Correct action ID assignment (4198 for GSC, 9294 for G-Core PanLeft) ## Technical Stack - **Frontend**: Flutter Web, Dart, Dio HTTP client - **Backend**: Python FastAPI, PostgreSQL, Redis - **SDK Bridge**: C# .NET 8.0, gRPC, GeViSoft SDK - **Authentication**: JWT tokens - **Configuration**: GeViSoft .set files (binary format) ## Credentials - GeViSoft/GeViScope: username=sysadmin, password=masterkey - Default admin: username=admin, password=admin123 ## Deployment All services run on localhost: - Flutter Web: http://localhost:8081 - FastAPI: http://localhost:8000 - SDK Bridge gRPC: localhost:50051 - GeViServer: localhost (default port) Generated with Claude Code (https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
133
geutebruck-api/docs/architecture-overview.puml
Normal file
133
geutebruck-api/docs/architecture-overview.puml
Normal file
@@ -0,0 +1,133 @@
|
||||
@startuml Geutebruck API Architecture Overview
|
||||
!theme plain
|
||||
skinparam backgroundColor #FEFEFE
|
||||
skinparam componentStyle rectangle
|
||||
|
||||
title Geutebruck API System Architecture - Overview
|
||||
|
||||
' Client Layer
|
||||
package "Client Layer" {
|
||||
[Web Browser] as web
|
||||
[GeViSet UI] as geviset
|
||||
[Mobile App] as mobile
|
||||
[Postman/Testing] as postman
|
||||
}
|
||||
|
||||
' Python API Layer
|
||||
package "Python API Layer\n(FastAPI - Port 8000)" {
|
||||
[REST API Endpoints] as rest
|
||||
[Authentication] as auth
|
||||
[Service Layer] as services
|
||||
|
||||
package "Configuration Management ✅" {
|
||||
[ConfigurationService] as configsvc
|
||||
[Server CRUD] as servercrud
|
||||
[ActionMapping CRUD] as mappingcrud
|
||||
}
|
||||
}
|
||||
|
||||
' C# SDK Bridge Layer
|
||||
package "C# SDK Bridge\n(gRPC Service - Port 50051)" {
|
||||
[gRPC Services] as grpc
|
||||
|
||||
package "SDK Wrappers" {
|
||||
[GeViDatabase Wrapper] as dbwrapper
|
||||
[StateQuery Handler] as statequery
|
||||
[Action Dispatcher] as dispatcher
|
||||
}
|
||||
|
||||
package "Configuration Components ✅" {
|
||||
[SetupClient] as setupclient
|
||||
[FolderTreeParser] as parser
|
||||
[FolderTreeWriter] as writer
|
||||
}
|
||||
}
|
||||
|
||||
' GeViServer Layer
|
||||
package "GeViServer\n(GeViSoft Server - Ports 7700-7703)" {
|
||||
[Camera Manager] as cammgr
|
||||
[Monitor Manager] as monmgr
|
||||
[Action Engine] as actioneng
|
||||
[Configuration Storage] as config
|
||||
|
||||
database "TestMKS.set\n(Binary Config)" as setfile {
|
||||
[GeViGCoreServer\n13 servers] as servers
|
||||
[ActionMapping\n64 mappings] as mappings
|
||||
}
|
||||
}
|
||||
|
||||
' External Systems
|
||||
cloud "Hardware Layer" {
|
||||
[IP Cameras] as cameras
|
||||
[Video Monitors] as monitors
|
||||
[I/O Devices] as io
|
||||
}
|
||||
|
||||
' Connections - Client to API
|
||||
web -down-> rest : HTTP/REST
|
||||
mobile -down-> rest : HTTP/REST
|
||||
postman -down-> rest : HTTP/REST
|
||||
geviset -down-> config : SetupClient\n(blocked when\nAPI runs)
|
||||
|
||||
' API Internal
|
||||
rest -down-> auth
|
||||
rest -down-> services
|
||||
rest -down-> configsvc
|
||||
configsvc -down-> servercrud
|
||||
configsvc -down-> mappingcrud
|
||||
|
||||
' API to SDK Bridge
|
||||
services -down-> grpc : gRPC\nPort 50051
|
||||
configsvc -down-> grpc : gRPC\nPort 50051
|
||||
|
||||
' SDK Bridge Internal
|
||||
grpc -down-> dbwrapper
|
||||
grpc -down-> statequery
|
||||
grpc -down-> dispatcher
|
||||
grpc -down-> setupclient
|
||||
|
||||
setupclient -down-> parser
|
||||
setupclient -down-> writer
|
||||
|
||||
' SDK Bridge to GeViServer
|
||||
dbwrapper -down-> cammgr : GeViScope SDK\nPorts 7700-7703
|
||||
statequery -down-> monmgr : GeViScope SDK
|
||||
dispatcher -down-> actioneng : GeViScope SDK
|
||||
setupclient -down-> config : SetupClient\nProtocol
|
||||
|
||||
' GeViServer Internal
|
||||
config -down-> setfile
|
||||
cammgr -down-> servers
|
||||
actioneng -down-> mappings
|
||||
|
||||
' GeViServer to Hardware
|
||||
cammgr -down-> cameras : Video\nStreams
|
||||
monmgr -down-> monitors : Video\nOutput
|
||||
actioneng -down-> io : Control\nSignals
|
||||
|
||||
note right of configsvc
|
||||
**Implemented Features:**
|
||||
• Server CRUD (C, R, D working)
|
||||
• ActionMapping CRUD (all ops)
|
||||
• Cascade deletion prevention
|
||||
• Auto-increment server IDs
|
||||
• Bool type handling
|
||||
end note
|
||||
|
||||
note right of setupclient
|
||||
**Configuration Flow:**
|
||||
1. Download .set file
|
||||
2. Parse binary format
|
||||
3. Modify configuration
|
||||
4. Write back to tree
|
||||
5. Upload to GeViServer
|
||||
end note
|
||||
|
||||
note bottom of setfile
|
||||
**Current State:**
|
||||
• 13 G-Core Servers
|
||||
• 64 Action Mappings
|
||||
• Managed via REST API
|
||||
end note
|
||||
|
||||
@enduml
|
||||
Reference in New Issue
Block a user