# 02 Germplasm / Seed - cross_entity 表录入说明

来源：`docs/requirements/02-germplasm-seed-entry-requirements.md`

## 录入目标

`cross_entity` 统一承载计划杂交和实际杂交。通过 `planned` 字段区分计划与实际，通过 `planned_cross_id` 指向来源计划。

## 字段录入

| 字段                  | 业务意义                                    | 录入方式                 | 控件建议       | 校验规则                                |
| --------------------- | ------------------------------------------- | ------------------------ | -------------- | --------------------------------------- |
| `id`                  | cross 主键                                  | 系统生成                 | 隐藏/只读      | 必填、唯一                              |
| `auth_user_id`        | 数据所属用户或租户                          | 登录上下文自动写入       | 隐藏           | 不允许手填                              |
| `cross_type`          | 杂交类型，如 biparental、self、backcross 等 | 用户选择                 | 下拉框         | 可选；值来自枚举字典                    |
| `name`                | cross 名称，如 A × B、A/B、Cross-2026-001   | 用户录入或自动生成       | 文本框         | 必填；同一 crossing project 下建议唯一  |
| `planned`             | 是否为计划杂交                              | 页面根据入口自动设置     | 开关/分段控件  | 必填；计划杂交为 true，实际杂交为 false |
| `status`              | 状态，如 TODO、DONE、SKIPPED、FAILED        | 用户选择/系统更新        | 下拉框         | 可选；计划杂交常用 TODO/DONE/SKIPPED    |
| `crossing_project_id` | 所属杂交项目                                | 从 crossing_project 选择 | 杂交项目选择器 | 必选                                    |
| `planned_cross_id`    | 实际杂交来源的计划杂交                      | 从 cross_entity 选择     | Cross 选择器   | 可选；不能选择自己；实际杂交建议填写    |

## 录入建议

- 页面上分成“计划杂交”和“实际杂交”两个入口，但后端都保存到 `cross_entity`。
- 创建计划杂交时：`planned=true`，`planned_cross_id=null`。
- 完成实际杂交时：`planned=false`，`planned_cross_id=原计划杂交 id`。
- 亲本不要直接塞在 cross 主表字段中，应通过 `cross_parent` 维护，便于支持多亲本和 observation_unit 亲本来源。

---

