feat: GeViScope SDK integration with C# Bridge and Flutter app

- Add GeViScope Bridge (C# .NET 8.0) on port 7720
  - Full SDK wrapper for camera control, PTZ, actions/events
  - 17 REST API endpoints for GeViScope server interaction
  - Support for MCS (Media Channel Simulator) with 16 test channels
  - Real-time action/event streaming via PLC callbacks

- Add GeViServer Bridge (C# .NET 8.0) on port 7710
  - Integration with GeViSoft orchestration layer
  - Input/output control and event management

- Update Python API with new routers
  - /api/geviscope/* - Proxy to GeViScope Bridge
  - /api/geviserver/* - Proxy to GeViServer Bridge
  - /api/excel/* - Excel import functionality

- Add Flutter app GeViScope integration
  - GeViScopeRemoteDataSource with 17 API methods
  - GeViScopeBloc for state management
  - GeViScopeScreen with PTZ controls
  - App drawer navigation to GeViScope

- Add SDK documentation (extracted from PDFs)
  - GeViScope SDK docs (7 parts + action reference)
  - GeViSoft SDK docs (12 chunks)

- Add .mcp.json for Claude Code MCP server config

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Administrator
2026-01-19 08:14:17 +01:00
parent c9e83e4277
commit a92b909539
76 changed files with 62101 additions and 176 deletions

View File

@@ -8,12 +8,15 @@ import 'core/network/dio_client.dart';
import 'data/data_sources/remote/auth_remote_data_source.dart';
import 'data/data_sources/remote/server_remote_data_source.dart';
import 'data/data_sources/remote/action_mapping_remote_data_source.dart';
import 'data/data_sources/remote/geviserver_remote_data_source.dart';
import 'data/data_sources/remote/geviscope_remote_data_source.dart';
import 'data/data_sources/local/secure_storage_manager.dart';
import 'data/data_sources/local/server_local_data_source.dart';
import 'data/data_sources/local/action_mapping_local_data_source.dart';
// Services
import 'data/services/sync_service.dart';
import 'data/services/excel_import_service.dart';
// Repositories
import 'data/repositories/auth_repository_impl.dart';
@@ -31,6 +34,8 @@ import 'domain/use_cases/servers/get_servers.dart';
import 'presentation/blocs/auth/auth_bloc.dart';
import 'presentation/blocs/server/server_bloc.dart';
import 'presentation/blocs/action_mapping/action_mapping_bloc.dart';
import 'presentation/blocs/geviserver/geviserver_bloc.dart';
import 'presentation/blocs/geviscope/geviscope_bloc.dart';
final sl = GetIt.instance;
@@ -55,6 +60,18 @@ Future<void> init() async {
),
);
sl.registerFactory(
() => GeViServerBloc(
remoteDataSource: sl(),
),
);
sl.registerFactory(
() => GeViScopeBloc(
remoteDataSource: sl<GeViScopeRemoteDataSource>(),
),
);
// Use cases
sl.registerLazySingleton(() => Login(sl()));
sl.registerLazySingleton(() => GetServers(sl()));
@@ -93,6 +110,10 @@ Future<void> init() async {
),
);
sl.registerLazySingleton(
() => ExcelImportService(localDataSource: sl()),
);
// Data sources
sl.registerLazySingleton<AuthRemoteDataSource>(
() => AuthRemoteDataSourceImpl(dio: sl<DioClient>().dio),
@@ -114,6 +135,14 @@ Future<void> init() async {
() => ActionMappingLocalDataSourceImpl(),
);
sl.registerLazySingleton(
() => GeViServerRemoteDataSource(dio: sl<DioClient>().dio),
);
sl.registerLazySingleton(
() => GeViScopeRemoteDataSource(dio: sl<DioClient>().dio),
);
sl.registerLazySingleton(
() => SecureStorageManager(storage: sl()),
);