Files
I150/srcs/RobotNet10/Commons/RobotNet10.MapManager/README.md
2026-07-03 16:37:12 +07:00

182 lines
4.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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<MapDbContext>(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 ✅