fix(bioyond): fix order name type and prep bottle max volumes

bioyond_cell: Ensure order_name is cast to str and fix mix_time handling for single int/float values. YB_bottles: Fix max_volume capacity for 15mL and 60mL prep bottles to match their names.
This commit is contained in:
Andy6M
2026-04-16 21:17:22 +08:00
parent 73add2dc06
commit 3e43359460
2 changed files with 8 additions and 5 deletions

View File

@@ -1087,9 +1087,9 @@ class BioyondCellWorkstation(BioyondWorkstation):
for idx, item in enumerate(formulation):
materials = item.get("materials", []) + item.get("liquids", []) # 兼容两种物料列表命名
if idx < len(order_names) and order_names[idx]:
order_name = order_names[idx]
order_name = str(order_names[idx])
else:
order_name = item.get("order_name", f"{batch_id}_order_{idx + 1}")
order_name = str(item.get("order_name", f"{batch_id}_order_{idx + 1}"))
mats: List[Dict[str, Any]] = []
total_mass = 0.0
@@ -1104,7 +1104,10 @@ class BioyondCellWorkstation(BioyondWorkstation):
logger.warning(f"[create_orders_formulation] 第 {idx + 1} 个配方无有效物料,跳过")
continue
raw_mix_time = mix_time[idx] if idx < len(mix_time) else None
if isinstance(mix_time, (int, float)):
raw_mix_time = mix_time
else:
raw_mix_time = mix_time[idx] if idx < len(mix_time) else None
try:
item_mix_time = int(raw_mix_time) if raw_mix_time not in (None, "", "null") else 0
except (ValueError, TypeError):

View File

@@ -131,7 +131,7 @@ def YB_PrepBottle_15mL(
name: str,
diameter: float = 35.0,
height: float = 60.0,
max_volume: float = 30000.0, # 30mL
max_volume: float = 15000.0, # 15mL
barcode: str = None,
) -> Bottle:
"""创建配液瓶(小)"""
@@ -149,7 +149,7 @@ def YB_PrepBottle_60mL(
name: str,
diameter: float = 55.0,
height: float = 100.0,
max_volume: float = 150000.0, # 150mL
max_volume: float = 60000.0, # 60mL
barcode: str = None,
) -> Bottle:
"""创建配液瓶(大)"""