Files
brapi-java/docs/dev/01-core/03-program.md
2026-05-28 11:56:17 +08:00

78 lines
3.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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` |
## 校验规则
1. `name` 必填。
2. `crop_id` 必选,且必须引用已存在的 `crop.id`
3. 选择负责人时,`lead_person_id` 必须引用已存在的 `person.id`
4. `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` |
## 导入导出
1. 支持通过 Core 导入流程导入 `program`
2. 外键列支持填写 ID可额外支持名称匹配但名称重复时必须报错。
3. 可按 `id` 幂等更新;无 `id` 时新增。
4. 列表页支持导出当前筛选结果,导出文件应包含 ID 和展示名称。
## 删除/停用
`program` 已有关联 `trial``study``location``crossing_project``seed_lot``plate``sample` 时,不允许物理删除。后端需要返回引用对象类型和数量,前端展示后引导用户停用。
## 验收点
1. 创建 program 时必须选择 crop。
2. 负责人选择器只能保存已存在的 person ID。
3. Program 详情页能进入该项目下的 trial 和 study。