Skip to content

Commit 0597029

Browse files
committed
feat: Integrate material search logic and cleanup deprecated files
- Update coin_cell_assembly.py with material search dialog handling - Update YB_warehouses.py with latest warehouse configurations - Remove outdated documentation and test data files
1 parent 78729ef commit 0597029

File tree

8 files changed

+157
-23
lines changed

8 files changed

+157
-23
lines changed

unilabos/devices/workstation/README.md

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,5 @@
11
# 工作站抽象基类物料系统架构说明
22

3-
## 设计理念
4-
5-
基于用户需求"请你帮我系统思考一下,工作站抽象基类的物料系统基类该如何构建",我们最终确定了一个**PyLabRobot Deck为中心**的简化架构。
6-
73
### 核心原则
84

95
1. **PyLabRobot为物料管理核心**:使用PyLabRobot的Deck系统作为物料管理的基础,利用其成熟的Resource体系
Binary file not shown.
Binary file not shown.
Binary file not shown.

unilabos/devices/workstation/bioyond_studio/bioyond_cell/smiles&molweight.py

Lines changed: 0 additions & 12 deletions
This file was deleted.

unilabos/devices/workstation/bioyond_studio/bioyond_cell/solid_materials.csv

Lines changed: 0 additions & 7 deletions
This file was deleted.
Lines changed: 157 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,157 @@
1+
# 批量出库 Excel 模板使用说明
2+
3+
**文件**: `outbound_template.xlsx`
4+
**用途**: 配合 `auto_batch_outbound_from_xlsx()` 方法进行批量出库操作
5+
**API 端点**: `/api/lims/storage/auto-batch-out-bound`
6+
7+
---
8+
9+
## 📋 Excel 列说明
10+
11+
| 列名 | 说明 | 示例 | 必填 |
12+
|------|------|------|------|
13+
| `locationId` | **库位 ID(UUID)** | `3a19da43-57b5-294f-d663-154a1cc32270` | ✅ 是 |
14+
| `warehouseId` | **仓库 ID 或名称** | `配液站内试剂仓库` | ✅ 是 |
15+
| `quantity` | **出库数量** | `1.0`, `2.0` | ✅ 是 |
16+
| `x` | **X 坐标(库位横向位置)** | `1`, `2`, `3` | ✅ 是 |
17+
| `y` | **Y 坐标(库位纵向位置)** | `1`, `2`, `3` | ✅ 是 |
18+
| `z` | **Z 坐标(库位层数/高度)** | `1`, `2`, `3` | ✅ 是 |
19+
| `备注说明` | 可选备注信息 | `配液站内试剂仓库-A01` | ❌ 否 |
20+
21+
### 📐 坐标说明
22+
23+
**x, y, z** 是库位在仓库内的**三维坐标**
24+
25+
```
26+
仓库(例如 WH4)
27+
├── Z=1(第1层/加样头面)
28+
│ ├── X=1, Y=1(位置 A)
29+
│ ├── X=2, Y=1(位置 B)
30+
│ ├── X=3, Y=1(位置 C)
31+
│ └── ...
32+
33+
└── Z=2(第2层/原液瓶面)
34+
├── X=1, Y=1(位置 A)
35+
├── X=2, Y=1(位置 B)
36+
└── ...
37+
```
38+
39+
- **warehouseId**: 指定哪个仓库(WH3, WH4, 配液站等)
40+
- **x, y, z**: 在该仓库内的三维坐标
41+
- **locationId**: 该坐标位置的唯一 UUID
42+
43+
### 🎯 起点与终点
44+
45+
**重要说明**:批量出库模板**只规定了出库的"起点"**(从哪里取物料),**没有指定"终点"**(放到哪里)。
46+
47+
```
48+
出库流程:
49+
起点(Excel 指定) → ?终点(LIMS/工作流决定)
50+
51+
locationId, x, y, z → 由 LIMS 系统或当前工作流自动分配
52+
```
53+
54+
**终点由以下方式确定:**
55+
- **LIMS 系统自动分配**:根据当前任务自动规划目标位置
56+
- **工作流预定义**:在创建出库任务时已绑定目标位置
57+
- **暂存区**:默认放到出库暂存区,等待下一步操作
58+
59+
💡 **对比**:上料操作(`auto_feeding4to3`)则有 `targetWH` 参数可以指定目标仓库
60+
61+
---
62+
63+
## 🔍 如何获取 UUID?
64+
65+
### 方法 1:从配置文件获取
66+
67+
参考 `yibin_electrolyte_config.json` 中的 `warehouse_mapping`
68+
69+
```json
70+
{
71+
"warehouse_mapping": {
72+
"配液站内试剂仓库": {
73+
"site_uuids": {
74+
"A01": "3a19da43-57b5-294f-d663-154a1cc32270",
75+
"B01": "3a19da43-57b5-7394-5f49-54efe2c9bef2",
76+
"C01": "3a19da43-57b5-5e75-552f-8dbd0ad1075f"
77+
}
78+
},
79+
"手动堆栈": {
80+
"site_uuids": {
81+
"A01": "3a19deae-2c7a-36f5-5e41-02c5b66feaea",
82+
"A02": "3a19deae-2c7a-dc6d-c41e-ef285d946cfe"
83+
}
84+
}
85+
}
86+
}
87+
```
88+
89+
### 方法 2:通过 API 查询
90+
91+
```python
92+
material_info = hardware_interface.material_id_query(workflow_id)
93+
locations = material_info.get("locations", [])
94+
```
95+
96+
---
97+
98+
## 📝 填写示例
99+
100+
### 示例 1:从配液站内试剂仓库出库
101+
102+
| locationId | warehouseId | quantity | x | y | z | 备注说明 |
103+
|------------|-------------|----------|---|---|---|----------|
104+
| `3a19da43-57b5-294f-d663-154a1cc32270` | 配液站内试剂仓库 | 1 | 1 | 1 | 1 | A01 位置 |
105+
| `3a19da43-57b5-7394-5f49-54efe2c9bef2` | 配液站内试剂仓库 | 2 | 2 | 1 | 1 | B01 位置 |
106+
107+
### 示例 2:从手动堆栈出库
108+
109+
| locationId | warehouseId | quantity | x | y | z | 备注说明 |
110+
|------------|-------------|----------|---|---|---|----------|
111+
| `3a19deae-2c7a-36f5-5e41-02c5b66feaea` | 手动堆栈 | 1 | 1 | 1 | 1 | A01 |
112+
| `3a19deae-2c7a-dc6d-c41e-ef285d946cfe` | 手动堆栈 | 1 | 1 | 2 | 1 | A02 |
113+
114+
---
115+
116+
## 💻 使用方法
117+
118+
```python
119+
from bioyond_cell_workstation import BioyondCellWorkstation
120+
121+
# 初始化工作站
122+
workstation = BioyondCellWorkstation(config=config, deck=deck)
123+
124+
# 调用批量出库方法
125+
result = workstation.auto_batch_outbound_from_xlsx(
126+
xlsx_path="outbound_template.xlsx"
127+
)
128+
```
129+
130+
---
131+
132+
## ⚠️ 注意事项
133+
134+
1. **locationId 必须是有效的 UUID**,不能使用库位名称
135+
2. **x, y, z 坐标必须与 locationId 对应**,表示该库位在仓库内的位置
136+
3. **quantity 必须是数字**,可以是整数或浮点数
137+
4. Excel 文件必须包含表头行
138+
5. 空行会被自动跳过
139+
6. 确保 UUID 与实际库位对应,否则 API 会报错
140+
141+
---
142+
143+
## 📚 相关文件
144+
145+
- **配置文件**: `yibin_electrolyte_config.json`
146+
- **Python 代码**: `bioyond_cell_workstation.py` (L630-695)
147+
- **生成脚本**: `create_outbound_template.py`
148+
- **上料模板**: `material_template.xlsx`
149+
150+
---
151+
152+
## 🔄 重新生成模板
153+
154+
```bash
155+
conda activate newunilab
156+
python create_outbound_template.py
157+
```
Binary file not shown.

0 commit comments

Comments
 (0)