Files
geutebruck/geutebruck_app/README.md
Administrator 14893e62a5 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>
2025-12-31 18:10:54 +01:00

118 lines
3.3 KiB
Markdown

# Geutebruck API Flutter App
Flutter mobile application for managing Geutebruck surveillance systems (G-Core and GeViScope servers) with offline-first architecture.
## 📱 Features
- 🔐 **Authentication**: Secure JWT-based login
- 🖥️ **Server Management**: Full CRUD operations for G-Core and GeViScope servers
- 📡 **Offline-First**: Local Hive storage with bidirectional sync
- 🔄 **Sync**: Upload changes and download latest configuration
- 🎨 **Modern UI**: Material Design 3 with responsive layout
- 🧭 **Navigation**: App drawer with organized menu structure
## 🚀 Quick Start
### Prerequisites
- Flutter SDK ^3.5.0
- Dart SDK ^3.5.0
- API server running at `http://100.81.138.77:8000`
### Installation
```bash
# Clone the repository
cd geutebruck_app
# Install dependencies
flutter pub get
# Run code generation
flutter pub run build_runner build --delete-conflicting-outputs
# Run the app
flutter run -d web-server --web-port=8081 --web-hostname=0.0.0.0
```
### Default Credentials
- **Username**: `admin`
- **Password**: `admin123`
## 📁 Project Structure
```
lib/
├── core/ # Core functionality (constants, errors, network)
├── data/ # Data layer (repositories, data sources, models)
├── domain/ # Business logic (entities, use cases)
└── presentation/ # UI layer (screens, widgets, BLoCs)
```
## 🏗️ Architecture
- **Clean Architecture**: Separation of concerns across layers
- **BLoC Pattern**: State management with flutter_bloc
- **Offline-First**: Hive local storage with sync capabilities
- **Dependency Injection**: GetIt for IoC container
- **Routing**: GoRouter with type-safe navigation
## 🔧 Development
### Hot Reload
Press `r` in the Flutter terminal to hot reload changes without restarting.
### Code Generation
```bash
flutter pub run build_runner watch
```
### Running Tests
```bash
flutter test
```
## 📊 Current Status
**Phase 2 Complete**: Server Management fully implemented
- ✅ View all servers with filtering
- ✅ Create G-Core and GeViScope servers
- ✅ Update server configuration
- ✅ Delete servers with confirmation
- ✅ Offline-first with sync
- ✅ Dirty change tracking
See [STATUS.md](STATUS.md) for detailed progress.
## 🐛 Recent Fixes
### 2025-12-23: "No Data" Display Issue
Fixed BlocBuilder fallback case to show loading indicator instead of "No data" during state transitions.
## 📚 Documentation
- [Project Status](STATUS.md) - Detailed development status
- [Tasks](../geutebruck-api/specs/001-flutter-app/tasks.md) - Implementation task list
- [API Spec](../geutebruck-api/specs/001-surveillance-api/spec.md) - API documentation
## 🛠️ Tech Stack
- **Flutter** - Cross-platform UI framework
- **Dart** - Programming language
- **flutter_bloc** - State management
- **hive** - Local NoSQL database
- **dio** - HTTP client
- **go_router** - Declarative routing
- **get_it** - Dependency injection
## 🤝 Contributing
This is an AI-assisted development project. Changes should maintain:
- Clean Architecture principles
- BLoC pattern for state management
- Offline-first data strategy
- Comprehensive error handling
## 📝 License
This project is part of the Geutebruck API integration suite.