# store.py
import random
from supplier import Supplier
class Store:
"""Магазин со складом, графиком работы и возможностью заказа у поставщика."""
def __init__(self, name: str, processing_time: int,
open_hour: float, close_hour: float,
supplier: Supplier = None) -> None:
self.name = name
self.processing_time = processing_time # дополнительное время обработки, мин
self.open_hour = open_hour
self.close_hour = close_hour
self.supplier = supplier or Supplier("Default")
# Начальный запас: словарь товар -> количество. Пока один товар (item1) для демонстрации.
self.stock = {"item1": 5} # 5 единиц товара
def is_open(self, current_hour: float) -> bool:
if self.close_hour >= self.open_hour:
return self.open_hour <= current_hour < self.close_hour
else: # ночной график
return current_hour >= self.open_hour or current_hour < self.close_hour
def time_until_close(self, current_hour: float) -> float:
if not self.is_open(current_hour):
return 0.0
if self.close_hour >= self.open_hour:
return self.close_hour - current_hour
else:
return (24.0 - current_hour) + self.close_hour
def has_item(self, item_name: str = "item1") -> bool:
"""Проверить наличие товара (по умолчанию 'item1')."""
return self.stock.get(item_name, 0) > 0
def request_supplier(self, item_name: str = "item1") -> tuple[bool, float]:
"""
Попытаться восполнить товар через поставщика.
Возвращает (успех, задержка в часах).
"""
success, delay = self.supplier.supply()
if success:
# Увеличиваем запас (например, на 10 единиц)
self.stock[item_name] = self.stock.get(item_name, 0) + 10
return success, delay
def __str__(self):
return (f"{self.name} (обработка +{self.processing_time} мин, "
f"часы работы: {self.open_hour}-{self.close_hour})")