# RobotNet10.MapManager ## Overview Entity Framework Core module for managing AGV/AMR maps according to **VDMA LIF (Layout Interchange Format) 1.0.0** standard. ## Status ✅ **Phase 1 Complete: Database Foundation** - [x] Entity classes generated (10 entities) - [x] DbContext created with full configurations - [x] EF Core packages installed (v9.0.0) - [x] Design documentation finalized ## Entity Classes ### Hierarchy (Layout → Version → Level) 1. **Layout.cs** - Root entity (Building/Facility) 2. **LayoutVersion.cs** - Version history 3. **LayoutLevel.cs** - Floors/Levels ### Master Data 4. **VehicleType.cs** - Vehicle types (AMR-T800, etc.) ### Map Elements 5. **Node.cs** - Waypoints (VDMA LIF compliant) 6. **Edge.cs** - Paths (with EdgeName/EdgeDescription extensions) 7. **Station.cs** - Interaction points ### Junction Tables 8. **StationInteractionNode.cs** - Station ↔ Node mapping 9. **NodeVehicleProperty.cs** - Node × VehicleType properties 10. **EdgeVehicleProperty.cs** - Edge × VehicleType properties ### Database Context - **MapDbContext.cs** - EF Core DbContext with all configurations ## Key Features ### VDMA LIF Compliance - ✅ 100% adherence to lif-schema.json - ✅ Proper JSON serialization for import/export - ✅ Support for vehicleTypeNodeProperties and vehicleTypeEdgeProperties ### Version Control - ✅ Multiple versions per layout - ✅ Only ONE active version per layout - ✅ Active version is READ-ONLY ### Multi-Level Support - ✅ Multiple levels (floors) per version - ✅ LevelOrder for flexible sorting - ✅ Each level exports as separate layout entry in JSON ### VehicleType Customization - ✅ Per-vehicle properties for nodes and edges - ✅ Actions stored as JSON in NodeVehicleProperties - ✅ NURBS trajectory support in EdgeVehicleProperties ## Database Schema ``` Layouts (10 tables) ├── Layouts → LayoutVersions → LayoutLevels ├── VehicleTypes ├── Nodes (with NodeVehicleProperties) ├── Edges (with EdgeVehicleProperties) └── Stations (with StationInteractionNodes) ``` **Total Indexes:** ~25 (PKs, FKs, composite indexes) ## Next Steps ### Phase 2: Migrations ```bash # Add EF Core tools (if not installed) dotnet tool install --global dotnet-ef # Create initial migration dotnet ef migrations add InitialCreate --project srcs/RobotNet10/Commons/RobotNet10.MapManager # Update database dotnet ef database update --project srcs/RobotNet10/Commons/RobotNet10.MapManager ``` ### Phase 3: Import/Export Services - [ ] Create VDMA LIF JSON models - [ ] Implement Export service (DB → JSON) - [ ] Implement Import service (JSON → DB) - [ ] Validation against lif-schema.json ### Phase 4: Integration - [ ] API endpoints for MapEditor - [ ] Version management - [ ] VehicleType management ## Documentation - **DATABASE_DESIGN.md** - Complete schema documentation - **docs/MapEditor/V2-DangNV/DATABASE_DESIGN_DISCUSSION.md** - Design discussion summary - **lif-schema.json** - VDMA LIF JSON schema reference ## Configuration ### Connection Strings **SQL Server:** ```json "ConnectionStrings": { "MapManagerDb": "Server=localhost;Database=RobotNetMaps;Trusted_Connection=True;TrustServerCertificate=True;" } ``` **SQLite:** ```json "ConnectionStrings": { "MapManagerDb": "Data Source=robotnet_maps.db" } ``` ### Program.cs ```csharp using Microsoft.EntityFrameworkCore; using RobotNet10.MapManager.Data; var builder = WebApplication.CreateBuilder(args); // Add MapDbContext builder.Services.AddDbContext(options => options.UseSqlServer(builder.Configuration.GetConnectionString("MapManagerDb")) // or options.UseSqlite(builder.Configuration.GetConnectionString("MapManagerDb")) ); var app = builder.Build(); app.Run(); ``` ## Scale Targets - 50 Layouts - 10 Versions per Layout - 10 Levels per Version - 1,000 Nodes per Level - 999 Edges per Level - 10 VehicleTypes **Total:** ~5M Nodes, ~5M Edges ## Performance Optimizations - ✅ Strategic indexing (25+ indexes) - ✅ Designed for partitioning (by LayoutId or LevelId) - ✅ Caching strategy identified - ✅ Pagination support planned ## References - **VDMA LIF Specification:** FuI_Guideline_LIF_GB_final.pdf - **Entity Framework Core:** https://docs.microsoft.com/ef/core/ - **VDMA LIF Schema:** lif-schema.json --- **Version:** 1.0 **Date:** 2024-11-26 **Status:** Phase 1 Complete ✅