import datetime from dataclasses import dataclass, field from typing import Optional from typing_extensions import Self from core.domain.optimization.Optimization import Optimization from core.domain.optimization.OptimizationPoint import OptimizationPoint from core.domain.optimization.OptimizationRoute import OptimizationRoute from core.types.Id import Id @dataclass class OptimizationResult: optimizationId: Id[Optimization] routes: list[OptimizationRoute] info: str authorizedByUserId: str parent: Optional[Id[Self]] createdAt: int = field(default_factory=lambda: int(datetime.datetime.now().timestamp())) unvisited: list[OptimizationPoint] = field(default_factory=list) id: Id[Self] = Id.field()