3.3 KiB
3.3 KiB
01 Core - program 表录入说明
来源:docs/requirements/01-core-data-entry-requirements.md
录入目标
program 表示长期育种项目,是多个 trial、study、材料、样本和结果的聚合维度。创建 program 时必须明确所属 crop,可选负责人。
前置依赖和下游引用
| 类型 | 内容 |
|---|---|
| 表 | program |
| 前置依赖 | crop,可选 person |
| 下游引用 | trial、study、location、crossing_project、seed_lot、plate、sample |
页面入口
| 页面 | 录入要求 |
|---|---|
| Program 列表页 | 支持 crop、负责人、program_type、关键词筛选;新增、编辑、查看详情、停用 |
| Program 新增/编辑页 | 分为“基本信息”和“负责人/作物”两组 |
| Program 详情页 | Tab 展示 trial、study、location、seed lot、sample |
列表页表格字段:name、abbreviation、crop、负责人、trial 数、study 数。
字段录入
| 字段 | 类型 | 控件 | 录入说明 | 校验/来源 |
|---|---|---|---|---|
id |
varchar(255) | 隐藏/只读 | 项目主键 | 必填、唯一 |
auth_user_id |
varchar(255) | 隐藏 | 数据所属用户 | 登录上下文自动写入 |
abbreviation |
varchar(255) | 文本框 | 项目缩写 | 可选 |
documentationurl |
varchar(255) | URL 输入框 | 项目文档链接 | URL 格式校验 |
funding_information |
varchar(255) | 多行文本 | 经费来源说明 | 可选 |
name |
varchar(255) | 文本框 | 项目名称 | 必填 |
objective |
varchar(255) | 多行文本 | 项目目标 | 可选 |
program_type |
integer | 下拉框 | 项目类型枚举 | 可选,按 BrAPI 枚举 |
crop_id |
varchar(255) | 作物选择器 | 所属作物 | 必选,来源 crop.id |
lead_person_id |
varchar(255) | 人员选择器 | 项目负责人 | 可选,来源 person.id |
校验规则
name必填。crop_id必选,且必须引用已存在的crop.id。- 选择负责人时,
lead_person_id必须引用已存在的person.id。 documentationurl需要做 URL 格式校验。
接口能力
| 接口 | 用途 |
|---|---|
GET /programs |
program 分页查询 |
POST /programs |
新增 program |
GET /programs/{id} |
program 详情 |
PUT /programs/{id} |
编辑 program |
DELETE /programs/{id} |
删除或停用 program,需做引用检查 |
GET /programs/{id}/trials |
查询 program 下 trial |
GET /programs/{id}/studies |
查询 program 下 study |
GET /selectors/programs |
program 搜索下拉,参数 keyword、cropId |
导入导出
- 支持通过 Core 导入流程导入
program。 - 外键列支持填写 ID;可额外支持名称匹配,但名称重复时必须报错。
- 可按
id幂等更新;无id时新增。 - 列表页支持导出当前筛选结果,导出文件应包含 ID 和展示名称。
删除/停用
当 program 已有关联 trial、study、location、crossing_project、seed_lot、plate、sample 时,不允许物理删除。后端需要返回引用对象类型和数量,前端展示后引导用户停用。
验收点
- 创建 program 时必须选择 crop。
- 负责人选择器只能保存已存在的 person ID。
- Program 详情页能进入该项目下的 trial 和 study。