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

87 lines
4.1 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 - location 表录入说明
来源:`docs/requirements/01-core-data-entry-requirements.md`
## 录入目标
`location` 记录试验实施地点,可作为公共地点,也可绑定 program 和 crop。study 创建时必须选择实施地点。
## 前置依赖和下游引用
| 类型 | 内容 |
| --- | --- |
| 表 | `location` |
| 前置依赖 | 可选 `crop``program`、父级 `location`、坐标 |
| 下游引用 | `study``seed_lot` |
## 页面入口
| 页面 | 录入要求 |
| --- | --- |
| Location 列表页 | 支持 crop、program、location_type、country、关键词筛选新增、编辑、查看详情、停用、地图查看 |
| Location 新增/编辑页 | 包含基本信息、行政区、坐标、父级地点 |
| Location 详情页 | 展示该地点下的 study 和 seed lot |
列表页支持地图/表格两种视图。列表页表格字段:`location_name`、location_type、country、program、crop、父级地点。
## 字段录入
| 字段 | 类型 | 控件 | 录入说明 | 校验/来源 |
| --- | --- | --- | --- | --- |
| `id` | varchar(255) | 隐藏/只读 | 地点主键 | 必填、唯一 |
| `auth_user_id` | varchar(255) | 隐藏 | 数据所属用户 | 登录上下文自动写入 |
| `abbreviation` | varchar(255) | 文本框 | 地点缩写 | 可选 |
| `coordinate_description` | varchar(255) | 多行文本 | 坐标描述 | 可选 |
| `coordinate_uncertainty` | varchar(255) | 文本框 | 坐标不确定性 | 可选 |
| `country_code` | varchar(255) | 国家代码选择器 | 国家代码 | 可选,建议 ISO 代码 |
| `country_name` | varchar(255) | 文本框 | 国家名称 | 可选,可由国家代码带出 |
| `documentationurl` | varchar(255) | URL 输入框 | 地点文档链接 | URL 格式校验 |
| `environment_type` | varchar(255) | 下拉框/文本框 | 环境类型 | 可选 |
| `exposure` | varchar(255) | 文本框 | 暴露条件 | 可选 |
| `institute_address` | varchar(255) | 多行文本 | 机构地址 | 可选 |
| `institute_name` | varchar(255) | 文本框 | 机构名称 | 可选 |
| `location_name` | varchar(255) | 文本框 | 地点名称 | 必填 |
| `location_type` | varchar(255) | 下拉框 | 地点类型,如 field、greenhouse、storage | 可选 |
| `site_status` | varchar(255) | 下拉框 | 地点状态 | 可选 |
| `slope` | varchar(255) | 文本框 | 坡度 | 可选 |
| `topography` | varchar(255) | 文本框 | 地形 | 可选 |
| `coordinates_id` | varchar(255) | 坐标选择器/地图取点 | 坐标对象 | 可选,来源 `geojson/coordinate` |
| `crop_id` | varchar(255) | 作物选择器 | 关联作物 | 可选,来源 `crop.id` |
| `parent_location_id` | varchar(255) | 地点选择器 | 父级地点 | 可选,不能选择自己 |
| `program_id` | varchar(255) | 项目选择器 | 所属项目 | 可选,来源 `program.id` |
## 校验规则
1. `location_name` 必填。
2. 坐标字段格式合法。
3. `parent_location_id` 不能选择自己。
4. 选择 program 后可自动带出 crop但允许地点作为公共地点不绑定 program。
5. `documentationurl` 需要做 URL 格式校验。
## 接口能力
| 接口 | 用途 |
| --- | --- |
| `GET /locations` | location 分页查询 |
| `POST /locations` | 新增 location |
| `GET /locations/{id}` | location 详情 |
| `PUT /locations/{id}` | 编辑 location |
| `GET /selectors/locations` | location 搜索下拉,参数 `keyword``programId``cropId``locationType` |
## 导入导出
1. 支持通过 Core 导入流程导入 `location`
2. 导入时如果 `parent_location_id` 指向自己,应报错并指出行号。
3. 外键列支持填写 ID可额外支持名称匹配但名称重复时必须报错。
4. 列表页支持导出当前筛选结果,导出文件应包含 ID 和展示名称。
## 删除/停用
`location` 已被 `study``seed_lot` 引用时,不允许物理删除。后端需要返回引用对象类型和数量,前端展示后引导用户停用。
## 验收点
1. Location 列表页支持表格视图和地图查看。
2. 父级地点不能选择自己。
3. Study 新增时 location 选择器可按 program/crop 过滤。