Compare commits

..

3 Commits

Author SHA1 Message Date
ZiWei
2240b832c4 node_to_plr_dict: WareHouse 子节点不写入 PLR children 列表
WareHouse 通过 sites 字符串追踪占位,不依赖 PLR children tree。
当同一载架(如 BIOYOND_PolymerStation_1BottleCarrier)出现在多个
WareHouse 的 children 下时,PLR _check_naming_conflicts 会因
同名子资源(flask_1)重复而报 ValueError。

将 WareHouse 的 children 排除在 PLR dict 外,PLR 树只保留
WareHouse 本身(位置/尺寸),不包含其持有的载架。

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-28 12:34:09 +08:00
ZiWei
a3c6b7e898 merge_remote_resources: 以远端为准,移除本地已不在远端的物料
远端(bioyond)不存在的物料不应保留在本地资源树中,
否则这些过期物料会在 PLR 反序列化时产生命名冲突。
同步时对两级子节点均执行移除:
- 三级物料(设备→仓库→物料)
- 三级子物料(设备→物料→子物料)

同时修复 else 分支缺少 remote_child_name 存在性检查的潜在 KeyError。

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-28 11:59:29 +08:00
ZiWei
62dbe98207 修复 WareHouse 反序列化时子资源命名冲突,并更新配液站测试 UUID
- itemized_carrier: assign_child_resource idx=None 时直接 return,
  不调用 super(),避免 bottle_carrier 子树进入 PLR 命名冲突检查
- dispensing_station_bioyond.json: 替换 placeholder UUID 为真实配置值

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-28 11:51:43 +08:00

View File

@@ -15,92 +15,92 @@
"z": 0 "z": 0
}, },
"config": { "config": {
"api_key": "<BIOYOND_API_KEY>", "api_key": "DE9BDDA0",
"api_host": "http://<BIOYOND_HOST>:<BIOYOND_PORT>", "api_host": "http://172.21.103.36:44388",
"material_type_mappings": { "material_type_mappings": {
"BIOYOND_PolymerStation_1FlaskCarrier": [ "BIOYOND_PolymerStation_1FlaskCarrier": [
"烧杯", "烧杯",
"<UUID_FLASK_CARRIER_TYPE>" "3a14196b-24f2-ca49-9081-0cab8021bf1a"
], ],
"BIOYOND_PolymerStation_1BottleCarrier": [ "BIOYOND_PolymerStation_1BottleCarrier": [
"试剂瓶", "试剂瓶",
"<UUID_BOTTLE_CARRIER_TYPE>" "3a14196b-8bcf-a460-4f74-23f21ca79e72"
], ],
"BIOYOND_PolymerStation_6StockCarrier": [ "BIOYOND_PolymerStation_6StockCarrier": [
"分装板", "分装板",
"<UUID_6STOCK_CARRIER_TYPE>" "3a14196e-5dfe-6e21-0c79-fe2036d052c4"
], ],
"BIOYOND_PolymerStation_Liquid_Vial": [ "BIOYOND_PolymerStation_Liquid_Vial": [
"10%分装小瓶", "10%分装小瓶",
"<UUID_LIQUID_VIAL_TYPE>" "3a14196c-76be-2279-4e22-7310d69aed68"
], ],
"BIOYOND_PolymerStation_Solid_Vial": [ "BIOYOND_PolymerStation_Solid_Vial": [
"90%分装小瓶", "90%分装小瓶",
"<UUID_SOLID_VIAL_TYPE>" "3a14196c-cdcf-088d-dc7d-5cf38f0ad9ea"
], ],
"BIOYOND_PolymerStation_8StockCarrier": [ "BIOYOND_PolymerStation_8StockCarrier": [
"样品板", "样品板",
"<UUID_8STOCK_CARRIER_TYPE>" "3a14196e-b7a0-a5da-1931-35f3000281e9"
], ],
"BIOYOND_PolymerStation_Solid_Stock": [ "BIOYOND_PolymerStation_Solid_Stock": [
"样品瓶", "样品瓶",
"<UUID_SOLID_STOCK_TYPE>" "3a14196a-cf7d-8aea-48d8-b9662c7dba94"
] ]
}, },
"warehouse_mapping": { "warehouse_mapping": {
"粉末堆栈": { "粉末堆栈": {
"uuid": "<UUID_POWDER_WAREHOUSE>", "uuid": "3a14198e-6928-121f-7ca6-88ad3ae7e6a0",
"site_uuids": { "site_uuids": {
"A01": "<UUID_POWDER_A01>", "A01": "3a14198e-6929-31f0-8a22-0f98f72260df",
"A02": "<UUID_POWDER_A02>", "A02": "3a14198e-6929-4379-affa-9a2935c17f99",
"A03": "<UUID_POWDER_A03>", "A03": "3a14198e-6929-56da-9a1c-7f5fbd4ae8af",
"A04": "<UUID_POWDER_A04>", "A04": "3a14198e-6929-5e99-2b79-80720f7cfb54",
"B01": "<UUID_POWDER_B01>", "B01": "3a14198e-6929-f525-9a1b-1857552b28ee",
"B02": "<UUID_POWDER_B02>", "B02": "3a14198e-6929-bf98-0fd5-26e1d68bf62d",
"B03": "<UUID_POWDER_B03>", "B03": "3a14198e-6929-2d86-a468-602175a2b5aa",
"B04": "<UUID_POWDER_B04>", "B04": "3a14198e-6929-1a98-ae57-e97660c489ad",
"C01": "<UUID_POWDER_C01>", "C01": "3a14198e-6929-46fe-841e-03dd753f1e4a",
"C02": "<UUID_POWDER_C02>", "C02": "3a14198e-6929-72ac-32ce-9b50245682b8",
"C03": "<UUID_POWDER_C03>", "C03": "3a14198e-6929-8a0b-b686-6f4a2955c4e2",
"C04": "<UUID_POWDER_C04>", "C04": "3a14198e-6929-a0ec-5f15-c0f9f339f963",
"D01": "<UUID_POWDER_D01>", "D01": "3a14198e-6929-1bc9-a9bd-3b7ca66e7f95",
"D02": "<UUID_POWDER_D02>", "D02": "3a14198e-6929-3bd8-e6c7-4a9fd93be118",
"D03": "<UUID_POWDER_D03>", "D03": "3a14198e-6929-dde1-fc78-34a84b71afdf",
"D04": "<UUID_POWDER_D04>" "D04": "3a14198e-6929-7ac8-915a-fea51cb2e884"
} }
}, },
"溶液堆栈": { "溶液堆栈": {
"uuid": "<UUID_SOLUTION_WAREHOUSE>", "uuid": "3a14198e-d723-2c13-7d12-50143e190a23",
"site_uuids": { "site_uuids": {
"A01": "<UUID_SOLUTION_A01>", "A01": "3a14198e-d724-e036-afdc-2ae39a7f3383",
"A02": "<UUID_SOLUTION_A02>", "A02": "3a14198e-d724-d818-6d4f-5725191a24b5",
"A03": "<UUID_SOLUTION_A03>", "A03": "3a14198e-d724-b5bb-adf3-4c5a0da6fb31",
"A04": "<UUID_SOLUTION_A04>", "A04": "3a14198e-d724-d378-d266-2508a224a19f",
"B01": "<UUID_SOLUTION_B01>", "B01": "3a14198e-d724-afa4-fc82-0ac8a9016791",
"B02": "<UUID_SOLUTION_B02>", "B02": "3a14198e-d724-be8a-5e0b-012675e195c6",
"B03": "<UUID_SOLUTION_B03>", "B03": "3a14198e-d724-ab4e-48cb-817c3c146707",
"B04": "<UUID_SOLUTION_B04>", "B04": "3a14198e-d724-f56e-468b-0110a8feb36a",
"C01": "<UUID_SOLUTION_C01>", "C01": "3a14198e-d724-ca48-bb9e-7e85751e55b6",
"C02": "<UUID_SOLUTION_C02>", "C02": "3a14198e-d724-cc1e-5c2c-228a130f40a8",
"C03": "<UUID_SOLUTION_C03>", "C03": "3a14198e-d724-7f18-1853-39d0c62e1d33",
"C04": "<UUID_SOLUTION_C04>", "C04": "3a14198e-d724-0cf1-dea9-a1f40fe7e13c",
"D01": "<UUID_SOLUTION_D01>", "D01": "3a14198e-d724-df6d-5e32-5483b3cab583",
"D02": "<UUID_SOLUTION_D02>", "D02": "3a14198e-d724-1e28-c885-574c3df468d0",
"D03": "<UUID_SOLUTION_D03>", "D03": "3a14198e-d724-28a2-a760-baa896f46b66",
"D04": "<UUID_SOLUTION_D04>" "D04": "3a14198e-d724-0ddd-9654-f9352a421de9"
} }
}, },
"试剂堆栈": { "试剂堆栈": {
"uuid": "<UUID_REAGENT_WAREHOUSE>", "uuid": "3a14198c-c2cc-0290-e086-44a428fba248",
"site_uuids": { "site_uuids": {
"A01": "<UUID_REAGENT_A01>", "A01": "3a14198c-c2cf-8b40-af28-b467808f1c36",
"A02": "<UUID_REAGENT_A02>", "A02": "3a14198c-c2d0-dc7d-b8d0-e1d88cee3094",
"A03": "<UUID_REAGENT_A03>", "A03": "3a14198c-c2d0-354f-39ad-642e1a72fcb8",
"A04": "<UUID_REAGENT_A04>", "A04": "3a14198c-c2d0-725e-523d-34c037ac2440",
"B01": "<UUID_REAGENT_B01>", "B01": "3a14198c-c2d0-f3e7-871a-e470d144296f",
"B02": "<UUID_REAGENT_B02>", "B02": "3a14198c-c2d0-2070-efc8-44e245f10c6f",
"B03": "<UUID_REAGENT_B03>", "B03": "3a14198c-c2d0-1559-105d-0ea30682cab4",
"B04": "<UUID_REAGENT_B04>" "B04": "3a14198c-c2d0-efce-0939-69ca5a7dfd39"
} }
} }
}, },
@@ -156,4 +156,4 @@
"data": {} "data": {}
} }
] ]
} }