FEAT: Entités métier manquantes — Vehicle, Recording, LicensePlate, StoragePolicy #6
Labels
No labels
bug
chore
design
dx:ci
dx:database
dx:dotnet
dx:infra
dx:security
dx:tests
dx:ui
etape-1
etape-2
etape-3
etape-4
etape-5
etape-6
etape-7
feature
priority-high
priority-low
priority-medium
security
spec
tech-debt
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
nonobis/Heimdall#6
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
🎯 Contexte
La spec définit un modèle de domaine complet (Partie 2) dont 4 entités n'existent pas dans le code :
Vehicle,Recording,LicensePlate,StoragePolicy. Leurs relations (Event→Vehicle, Event→Recording, Camera→StoragePolicy N:1) manquent aussi.📚 Référence spec (MASTER_SPECIFICATION.md v2.0)
2.1 Définitions :
Vehicle: Id, LicensePlate, PersonId (FK), Make, Model, Color, CreatedAt, UpdatedAtRecording: Id, CameraId (FK), Timestamp, Duration, StoragePath, SizeBytes, StorageProvider, StoragePolicyId (FK), CreatedAt, UpdatedAtLicensePlate: Id, PlateText, VehicleId (FK), PersonId (FK?), Confidence, CreatedAt, UpdatedAtStoragePolicy: Id, Name, RetentionDays, StorageProvider (S3, Local), CreatedAt, UpdatedAt2.2 Cardinalités : Event → Vehicle N:1, Event → Recording N:1, Camera → StoragePolicy N:1 (plusieurs caméras partagent une politique), Event → Event (Parent) N:1, Event → Recording pour playback
2.3 : index
idx_license_plateGIN trgm (recherche floue plaque)🔍 État actuel (vérifié dans le code)
DbSets actuels (
AppDbContext.cs) : Sites, Agents, Cameras, CameraCredentials, CameraDetectionProfiles, UserSites, ApiKeys, AuditLogs, AppSettings, AgentSettings, Groups, UserGroups, CameraDiscoveryResults, DiscoveredStreams, CameraAssignments, CameraEvents, Notifications, NotificationTemplates, UserNotificationConfigs, RevokedRefreshTokens, Persons, KnownFaces.StoragePolicy: 0 occurrence dans le code.Vehicle/Recording/LicensePlate: aucune entité.🧩 À faire
CameraEvent: VehicleId, RecordingId, ParentEventId, DetectionHash, IsSuppressed, TrackId (déjà partiellement)🧪 Critères d'acceptation
dotnet build0 erreur,make testvert📁 Fichiers concernés
src/Heimdall.Domain/Entities/Vehicle.cs (nouveau), Recording.cs (nouveau), LicensePlate.cs (nouveau), StoragePolicy.cs (nouveau), src/Heimdall.Domain/Entities/CameraEvent.cs, src/Heimdall.Infrastructure/Data/AppDbContext.cs, migrations