diff --git a/elevator_saga/core/models.py b/elevator_saga/core/models.py index 176e9be..c92615c 100644 --- a/elevator_saga/core/models.py +++ b/elevator_saga/core/models.py @@ -162,12 +162,13 @@ class PassengerInfo(SerializableModel): arrive_tick: int pickup_tick: int = 0 dropoff_tick: int = 0 + arrived: bool = False elevator_id: Optional[int] = None @property def status(self) -> PassengerStatus: """乘客状态""" - if self.dropoff_tick > 0: + if self.arrived: return PassengerStatus.COMPLETED elif self.pickup_tick > 0: return PassengerStatus.IN_ELEVATOR diff --git a/elevator_saga/server/simulator.py b/elevator_saga/server/simulator.py index b22623c..e6567d3 100644 --- a/elevator_saga/server/simulator.py +++ b/elevator_saga/server/simulator.py @@ -457,6 +457,7 @@ class ElevatorSimulation: passenger = self.passengers[passenger_id] if passenger.destination == current_floor: passenger.dropoff_tick = self.tick + passenger.arrived = True passengers_to_remove.append(passenger_id) # Remove passengers who alighted