fix:sample/plate 之前的开发
This commit is contained in:
86
docs/dev/01-core/04-location.md
Normal file
86
docs/dev/01-core/04-location.md
Normal file
@@ -0,0 +1,86 @@
|
||||
# 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 过滤。
|
||||
Reference in New Issue
Block a user