mirror of
https://github.com/deepmodeling/Uni-Lab-OS
synced 2026-04-24 14:52:40 +00:00
- add CSV export for order data in bioyond_cell - extract prep and vial bottles from order_finish report - update bioyond_cell registry with csv_export_path - update coin_cell_assembly to export new bottle barcodes and mass ratios - add 260415csv_export_walkthrough.md
73 lines
3.6 KiB
Markdown
73 lines
3.6 KiB
Markdown
# CSV 导出功能变更概要
|
||
|
||
## 修改的文件
|
||
|
||
### 1. [bioyond_cell_workstation.py](file:///d:/UniLabdev/Uni-Lab-OS/unilabos/devices/workstation/bioyond_studio/bioyond_cell/bioyond_cell_workstation.py)
|
||
|
||
#### 新增导入
|
||
- `import csv` 和 `import os`(L14-15)
|
||
|
||
#### 新增方法
|
||
|
||
| 方法 | 功能 |
|
||
|------|------|
|
||
| `_extract_prep_bottle_from_report` | 从 order_finish 报文提取**配液瓶**信息(每订单最多1个) |
|
||
| `_extract_vial_bottles_from_report` | 从 order_finish 报文提取**分液瓶**信息(每订单可多个,返回数组) |
|
||
| `_export_order_csv` | 汇总所有信息写入 CSV 文件 |
|
||
|
||
#### 配液瓶筛选逻辑 (`_extract_prep_bottle_from_report`)
|
||
- `typemode="1"`, `realQuantity=1`, `usedQuantity=1`
|
||
- `locationId` 以 `3a19deae-2c7a-` 开头(手动传递窗)
|
||
- LIMS API 二次确认:`typeName` 含"配液瓶(小)"或"配液瓶(大)"
|
||
|
||
#### 分液瓶筛选逻辑 (`_extract_vial_bottles_from_report`)
|
||
- `typemode="1"`, `realQuantity=1`, `usedQuantity=1`
|
||
- `locationId` 以 `3a19debc-84b5-` 或 `3a19debe-5200` 开头(自动堆栈-左/右)
|
||
- LIMS API 二次确认:`typeName` 为"5ml分液瓶"或"20ml分液瓶"
|
||
- **返回数组**,支持 1×5ml + n×20ml 的组合
|
||
|
||
#### 修改的方法
|
||
|
||
| 方法 | 变更 |
|
||
|------|------|
|
||
| `_submit_and_wait_orders` | 新增配液瓶+分液瓶提取步骤,将 `prep_bottles` 和 `vial_bottles` 存入 `final_result` |
|
||
| `create_orders` | 添加 `csv_export_path` 参数,末尾调用 `_export_order_csv` |
|
||
| `create_orders_formulation` | 添加 `csv_export_path` 参数,末尾调用 `_export_order_csv` |
|
||
|
||
#### CSV 输出格式
|
||
```
|
||
orderCode, orderName, 配液瓶类型, 配液瓶二维码, 分液瓶类型, 分液瓶二维码, 目标配液质量比, 真实配液质量比, 时间
|
||
```
|
||
- 单个分液瓶时直接写值;多个分液瓶时类型和二维码用 JSON 数组表示
|
||
- CSV 编码使用 `utf-8-sig`(兼容 Excel 打开)
|
||
- `csv_export_path` 默认为空字符串,不传则不导出(向后兼容)
|
||
|
||
---
|
||
|
||
### 2. [bioyond_cell.yaml](file:///d:/UniLabdev/Uni-Lab-OS/unilabos/registry/devices/bioyond_cell.yaml)
|
||
|
||
为两个 action 注册了 `csv_export_path` 参数:
|
||
|
||
- `auto-create_orders`: `goal_default` + `schema.properties.goal.properties` 中添加 `csv_export_path`
|
||
- `auto-create_orders_formulation`: 同上
|
||
|
||
---
|
||
|
||
### 3. [coin_cell_assembly.py](file:///d:/UniLabdev/Uni-Lab-OS/unilabos/devices/workstation/coin_cell_assembly/coin_cell_assembly.py) 的 CSV 改动与全流程追溯
|
||
|
||
在 `bioyond_cell_workstation.py` 的 `_submit_and_wait_orders` 最后阶段,提取 `prep_bottles`(配液瓶)和 `vial_bottles`(分液瓶)的条码并随 `mass_ratios` 数组一起下发给各下游工站(例如扣电组装站),实现跨站的全流程配方追溯。
|
||
|
||
并在扣电站生成的 `date_xxx.csv` 中,**替换并新增**了以下列:
|
||
- 移除了原有的 `formulation_order_code` 与合并的 `formulation_ratio` 列。
|
||
- 新增 `orderName` 导出
|
||
- 新增 `prep_bottle_barcode`(奔曜传递的配液瓶二维码)
|
||
- 新增 `vial_bottle_barcodes`(奔曜传递的分液瓶二维码,多瓶时存 JSON 数组)
|
||
- 新增 `target_mass_ratio` 理论目标质量比
|
||
- 新增 `real_mass_ratio` 实际称量真实质量比
|
||
|
||
*注意:这与操作人员在手套箱内扫码传入扣电站的 `electrolyte_code` 是单独记录的,方便做数据核对。*
|
||
|
||
## 向后兼容性
|
||
- `csv_export_path` 默认值为 `""`(空字符串),现有调用不受影响
|
||
- 新增的 `prep_bottles` 和 `vial_bottles` 字段为 `final_result` 和 `mass_ratios` 内部的新增附属字段,不破坏现有数据结构。
|