# 04 Germplasm / Seed - germplasm_donor 表录入说明

来源：`docs/architecture/04-germplasm-seed-data-flow.md`

## 录入目标

`germplasm_donor` 记录某个 germplasm 的 donor accession 和 donor institute 信息，是 germplasm 的附属明细。

## 上下游关系

| 类型 | 内容 |
| --- | --- |
| 表 | `germplasm_donor` |
| Java 实体 | `DonorEntity` |
| 前置依赖 | `germplasm` |
| 下游引用 | MCPD 展示、来源追踪 |

## 字段录入

| 字段 | 业务意义 | 录入方式 | 校验规则 |
| --- | --- | --- | --- |
| `id` | donor 记录主键 | 系统生成；导入可指定 | 必填、唯一 |
| `auth_user_id` | 数据所属用户 | 登录上下文自动写入 | 不允许前端手填 |
| `germplasm_id` | 所属 germplasm | Germplasm 选择器/详情页带出 | 必选，必须存在 |
| `donor_accession_number` | donor accession 编号 | 用户录入 | 可选 |
| `donor_institute_code` | donor 机构代码 | 用户录入/选择 | 可选 |
| `donor_institute_name` | donor 机构名称 | 用户录入/选择 | 可选 |
| `germplasmpui` | donor germplasm PUI | 用户录入 | 可选 |

## 页面与交互

- 在 Germplasm 详情页 Donor Tab 内维护。
- 支持一条 germplasm 维护多个 donor 记录。

## 关键校验

1. `germplasm_id` 必须存在。
2. 同一 germplasm 下 donor accession + institute code 不建议重复。
3. 删除 donor 记录不应删除 germplasm 主数据。

**状态：已完成**（页面：`germplasm/germplasm/[germplasmDbId]` → Donor Tab；BrAPI `PUT /germplasm/{id}` donors 整表替换）
