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>
14 KiB
Geutebruck API Flutter App - Functional Specification
Overview
A mobile application for managing Geutebruck video surveillance systems through the REST API. The app provides administrators with full control over server configurations, action mappings, cameras, monitors, and cross-switching operations.
Target Users
- System Administrators: Configure and manage Geutebruck servers
- Security Operators: Monitor and control video surveillance systems
- Technicians: Set up action mappings and camera configurations
User Stories
Epic 1: Authentication & Authorization
US-1.1: User Login
As a system administrator I want to log in with my username and password So that I can securely access the system
Acceptance Criteria:
- Login screen with username and password fields
- Secure credential storage using flutter_secure_storage
- JWT token received and stored on successful authentication
- Error message displayed for invalid credentials
- "Remember me" option to persist login
- Password visibility toggle
- Loading indicator during authentication
API Endpoint: POST /api/v1/auth/login
US-1.2: Automatic Token Refresh
As a logged-in user I want my session to remain active without re-logging in So that I don't lose access during normal usage
Acceptance Criteria:
- Access token automatically refreshed before expiration
- Refresh token used to obtain new access token
- User redirected to login if refresh fails
- Silent refresh (no UI disruption)
API Endpoint: POST /api/v1/auth/refresh
US-1.3: User Logout
As a logged-in user I want to log out of the application So that I can secure my session when done
Acceptance Criteria:
- Logout button in app drawer/menu
- All tokens cleared from secure storage
- User redirected to login screen
- Confirmation dialog before logout
Epic 2: Server Management
US-2.1: View All Servers
As a system administrator I want to see a list of all configured servers (G-Core and GeViScope) So that I can manage my infrastructure
Acceptance Criteria:
- Combined list showing both G-Core and GeViScope servers
- Display: alias, host, type (G-Core/GeViScope), enabled status
- Search/filter by alias or host
- Pull-to-refresh to update list
- Server count displayed (total, G-Core, GeViScope)
- Visual indicator for enabled/disabled servers
- Tap to view details
API Endpoint: GET /api/v1/configuration/servers
US-2.2: View G-Core Servers
As a system administrator I want to view only G-Core servers So that I can focus on G-Core management
Acceptance Criteria:
- Filtered list showing only G-Core servers
- Display: ID, alias, host, user, enabled status
- Search and filter capabilities
- Sort by ID, alias, or host
API Endpoint: GET /api/v1/configuration/servers/gcore
US-2.3: View GeViScope Servers
As a system administrator I want to view only GeViScope servers So that I can focus on GeViScope management
Acceptance Criteria:
- Filtered list showing only GeViScope servers
- Display: ID, alias, host, user, enabled status, dialup settings
- Search and filter capabilities
API Endpoint: GET /api/v1/configuration/servers/geviscope
US-2.4: View Server Details
As a system administrator I want to view detailed information about a specific server So that I can review its configuration
Acceptance Criteria:
- All server properties displayed
- Connection status indicator
- Edit button to modify settings
- Delete button to remove server
- Test connection button
API Endpoints:
GET /api/v1/configuration/servers/gcore/{id}GET /api/v1/configuration/servers/geviscope/{id}
US-2.5: Create G-Core Server
As a system administrator I want to add a new G-Core server So that I can expand my managed infrastructure
Acceptance Criteria:
- Form with fields: alias, host, user, password
- Optional fields: enabled, deactivate_echo, deactivate_live_check
- Input validation (required fields, valid IP/hostname)
- Server ID auto-generated
- Success/error feedback
- Return to server list on success
API Endpoint: POST /api/v1/configuration/servers/gcore
US-2.6: Create GeViScope Server
As a system administrator I want to add a new GeViScope server So that I can manage GeViScope systems
Acceptance Criteria:
- Form with standard fields plus dialup settings
- All dialup configuration options available
- Input validation
- Success/error feedback
API Endpoint: POST /api/v1/configuration/servers/geviscope
US-2.7: Update Server
As a system administrator I want to modify an existing server's configuration So that I can keep settings current
Acceptance Criteria:
- Pre-populated form with current values
- Editable fields (except ID)
- Validation before saving
- Confirmation dialog for changes
- Success/error feedback
API Endpoints:
PUT /api/v1/configuration/servers/gcore/{id}PUT /api/v1/configuration/servers/geviscope/{id}
US-2.8: Delete Server
As a system administrator I want to remove a server from the system So that I can clean up unused configurations
Acceptance Criteria:
- Delete button with confirmation dialog
- Warning message about permanent deletion
- Success feedback
- Return to server list
- Server removed from list immediately
API Endpoints:
DELETE /api/v1/configuration/servers/gcore/{id}DELETE /api/v1/configuration/servers/geviscope/{id}
Epic 3: Action Mapping Management
US-3.1: View Action Mappings
As a system administrator I want to see all configured action mappings So that I can understand the automation rules
Acceptance Criteria:
- List of all action mappings with caption, ID
- Display input action parameters
- Display output action count
- Search by caption
- Pull-to-refresh
- Tap to view details
API Endpoint: GET /api/v1/configuration/action-mappings
US-3.2: View Action Mapping Details
As a system administrator I want to see detailed information about an action mapping So that I can understand its configuration
Acceptance Criteria:
- Display mapping caption and ID
- List all input action parameters with values
- List all output actions with:
- Action name
- Caption
- Server
- Parameters
- Edit and delete buttons
API Endpoint: GET /api/v1/configuration/action-mappings/{id}
US-3.3: Create Action Mapping
As a system administrator I want to create a new action mapping So that I can automate system responses
Acceptance Criteria:
- Form with mapping caption
- Dynamic input parameter builder
- Output action builder with:
- Action dropdown (GscAction/GCoreAction)
- Server selection
- Parameter configuration
- PTZ head selection for camera actions
- Add multiple output actions
- Validation of all fields
- Success/error feedback
API Endpoint: POST /api/v1/configuration/action-mappings
US-3.4: Update Action Mapping
As a system administrator I want to modify an existing action mapping So that I can adjust automation rules
Acceptance Criteria:
- Pre-populated form with current values
- Edit caption, input parameters, output actions
- Add/remove output actions
- Validation
- Success/error feedback
API Endpoint: PUT /api/v1/configuration/action-mappings/{id}
US-3.5: Delete Action Mapping
As a system administrator I want to remove an action mapping So that I can clean up unused automations
Acceptance Criteria:
- Delete button with confirmation
- Warning about permanent deletion
- Success feedback
- Removed from list immediately
API Endpoint: DELETE /api/v1/configuration/action-mappings/{id}
Epic 4: Camera Management
US-4.1: View Camera List
As a security operator I want to see all available cameras So that I can select cameras for viewing or control
Acceptance Criteria:
- List of all cameras with ID and name
- Visual indicator for online/offline status
- Search by camera name
- Filter by status
- Pull-to-refresh
API Endpoint: GET /api/v1/cameras
US-4.2: View Camera Details
As a security operator I want to see detailed camera information So that I can understand its configuration
Acceptance Criteria:
- Camera ID, name, description
- Connection status
- Server assignment
- PTZ capabilities indicator
- Quick action buttons (if PTZ supported)
API Endpoint: GET /api/v1/cameras/{id}
US-4.3: Control PTZ Camera
As a security operator I want to control PTZ camera movements So that I can direct camera focus
Acceptance Criteria:
- PTZ control pad (Pan Left/Right, Tilt Up/Down)
- Zoom In/Out buttons
- Focus Near/Far buttons
- Stop button for all movements
- Speed control slider
- Preset position selector
- Save preset button
- Visual feedback during movement
API Endpoints:
- Pan: Actions like PanLeft, PanRight, PanStop
- Tilt: TiltUp, TiltDown
- Zoom: ZoomIn, ZoomOut, ZoomStop
- Focus: FocusNear, FocusFar, FocusStop
- Presets: PrePosSave, PrePosCall
Epic 5: Monitor Management
US-5.1: View Monitor List
As a security operator I want to see all available monitors So that I can manage video displays
Acceptance Criteria:
- List of monitors with ID and description
- Status indicator
- Search and filter
- Tap to view details
API Endpoint: GET /api/v1/monitors
US-5.2: View Monitor Details
As a security operator I want to see monitor configuration details So that I can understand its setup
Acceptance Criteria:
- Monitor ID, description, layout
- Current camera assignments
- Quick actions (clear, assign camera)
API Endpoint: GET /api/v1/monitors/{id}
Epic 6: Cross-Switching
US-6.1: Assign Camera to Monitor
As a security operator I want to connect a camera to a monitor So that I can view live video
Acceptance Criteria:
- Camera selector (dropdown or search)
- Monitor selector
- Preview of current assignments
- Connect button
- Success/error feedback
- Live video preview (optional)
API Endpoint: POST /api/v1/crossswitch/connect
US-6.2: Clear Monitor
As a security operator I want to disconnect all cameras from a monitor So that I can reset the display
Acceptance Criteria:
- Monitor selector
- Confirmation dialog
- Clear button
- Success feedback
API Endpoint: POST /api/v1/crossswitch/clear
Epic 7: Configuration Management
US-7.1: Export Configuration
As a system administrator I want to export the complete system configuration So that I can back it up or migrate it
Acceptance Criteria:
- Export button in settings
- JSON format export
- Save to device storage
- Share option (email, cloud)
- Export includes all servers, action mappings, etc.
API Endpoint: GET /api/v1/configuration/export
US-7.2: View Configuration Tree
As a system administrator I want to browse the raw configuration structure So that I can troubleshoot or verify settings
Acceptance Criteria:
- Expandable tree view
- Search/filter nodes
- Display node types and values
- Read-only view
API Endpoint: GET /api/v1/configuration/tree
Epic 8: User Interface & Navigation
US-8.1: App Navigation
As a user I want intuitive navigation between app sections So that I can efficiently access features
Acceptance Criteria:
- Bottom navigation bar with:
- Servers
- Action Mappings
- Cameras
- Monitors
- Side drawer with:
- Configuration
- Settings
- About
- Logout
- Back button support
- Clear visual hierarchy
US-8.2: Settings Screen
As a user I want to configure app preferences So that I can customize my experience
Acceptance Criteria:
- API base URL configuration
- Theme selection (Light/Dark/System)
- Language selection
- Notification preferences
- Cache management
- About section with version info
US-8.3: Error Handling
As a user I want clear error messages and recovery options So that I understand what went wrong and how to proceed
Acceptance Criteria:
- Network error: Retry button, offline indicator
- Authentication error: Redirect to login
- Validation error: Field-specific messages
- Server error: Error details with support contact
- Snackbar notifications for temporary messages
- Error logging for debugging
US-8.4: Loading States
As a user I want visual feedback during operations So that I know the app is working
Acceptance Criteria:
- Shimmer loading for lists
- Progress indicators for long operations
- Pull-to-refresh animation
- Button loading state (disabled with spinner)
Non-Functional Requirements
Performance
- App launch time: < 3 seconds on modern devices
- List scrolling: 60 FPS
- API response time: Visual feedback within 100ms
- Image loading: Progressive rendering with placeholders
Security
- All data transmission over HTTPS
- Tokens stored in secure storage
- Auto-logout after 30 minutes of inactivity
- No sensitive data in logs
Compatibility
- Android 8.0 (API level 26) and above
- iOS 12.0 and above
- Support for phones and tablets
Accessibility
- Screen reader support
- Minimum touch target size: 48x48 dp
- Contrast ratio: 4.5:1 for text
- Semantic labels for all interactive elements
Offline Support
- Cache server lists, action mappings
- Queue operations when offline
- Sync when connection restored
- Offline indicator in UI
Review & Acceptance Checklist
- All user stories implemented with acceptance criteria met
- Unit test coverage ≥ 80%
- Widget tests for all screens
- Integration tests for critical flows
- API integration tested against live backend
- Performance metrics validated
- Security review completed
- Accessibility tested with screen reader
- User acceptance testing completed
- Documentation updated