49 lines
2.1 KiB
Markdown
49 lines
2.1 KiB
Markdown
# 04 Germplasm / Seed - seed_lot 表录入说明
|
||
|
||
来源:`docs/architecture/04-germplasm-seed-data-flow.md`
|
||
|
||
## 录入目标
|
||
|
||
`seed_lot` 是真实库存批次,描述某一批种子当前数量、单位、库位和项目归属。同一个 germplasm 可以有多个 seed lot。
|
||
|
||
## 上下游关系
|
||
|
||
| 类型 | 内容 |
|
||
| --- | --- |
|
||
| 表 | `seed_lot` |
|
||
| Java 实体 | `SeedLotEntity` |
|
||
| 前置依赖 | 可选 `location`、`program` |
|
||
| 下游引用 | `seed_lot_content_mixture`、`seed_lot_transaction` |
|
||
| API | `/brapi/v2/seedlots` |
|
||
|
||
## 字段录入
|
||
|
||
| 字段 | 业务意义 | 录入方式 | 校验规则 |
|
||
| --- | --- | --- | --- |
|
||
| `id` | seed lot 主键 | 系统生成;导入可指定 | 必填、唯一 |
|
||
| `auth_user_id` | 数据所属用户 | 登录上下文自动写入 | 不允许前端手填 |
|
||
| `name` | 批次名称 | 用户录入/自动生成 | 必填,建议同一 program 下唯一 |
|
||
| `amount` | 当前库存数量 | 交易自动更新/用户录入初始值 | 非负 |
|
||
| `units` | 数量单位 | 下拉/文本 | 建议必填 |
|
||
| `created_date` | 创建时间 | 系统写入/导入 | 可选 |
|
||
| `last_updated` | 最后更新时间 | 系统更新 | 不建议手填 |
|
||
| `description` | 批次说明 | 多行文本 | 可选 |
|
||
| `source_collection` | 来源 collection | 文本 | 可选 |
|
||
| `storage_location` | 具体库位 | 文本 | 可选 |
|
||
| `location_id` | 所在地点/库位 | Location 选择器 | 可选,若填需存在 |
|
||
| `program_id` | 所属项目 | Program 选择器 | 可选,若填需存在 |
|
||
|
||
## 页面与交互
|
||
|
||
- SeedLot 列表页支持按 program、location、name、库存状态查询。
|
||
- 详情页展示 content mixture 和 transactions。
|
||
- 创建 seed lot 后建议至少维护一条 `seed_lot_content_mixture`。
|
||
|
||
## 关键校验
|
||
|
||
1. `amount` 不允许为负。
|
||
2. 普通用户不应直接编辑 amount,库存变化应通过 `seed_lot_transaction`。
|
||
3. 删除 seed lot 前检查组成明细和交易引用。
|
||
|
||
**状态:已完成**(页面:`germplasm/seed-lot` 列表 CRUD + 查询;`germplasm/seed-lot/[seedLotDbId]` 详情摘要;库存 amount 编辑时只读,通过交易更新)
|