# 常用地址需求卡

REQ-ADDR-01 模块入口与访问权限

- 功能点：支持具备常用地址功能权限的账号从基础数据进入常用地址列表页面，查看权限范围内的地址主数据。
- 异常与边界：① 账号无该模块权限时不展示入口或禁止进入页面；② 账号权限被调整后再次进入页面应按最新权限判断；③ 进入页面失败时保留在当前可访问页面并给出明确提示。
- 反例：① 不允许无权限账号直接访问常用地址页面；② 不允许绕过基础数据菜单进入未授权模块；③ 不允许权限失效后继续操作历史打开页面中的数据。

REQ-ADDR-02 条件查询

- 功能点：支持按地址名称、类型、详细地址、行政区划、站点编码、组织、联系人、联系方式筛选常用地址数据。
- 异常与边界：① 未输入查询条件时默认查询权限范围内全部数据；② 地址名称、详细地址、行政区划、联系人、联系方式按模糊匹配查询；③ 类型、组织按下拉选择值精确匹配，站点编码按精确匹配查询。
- 反例：① 不允许类型条件出现常规、港口/码头、铁路车站、空港机场之外的值；② 不允许站点编码输入空格后被当作有效编码查询；③ 不允许普通用户通过组织条件越权修改其他组织数据。

REQ-ADDR-03 查询重置

- 功能点：支持一键重置查询条件，清空用户已输入的筛选项并恢复默认组织范围。
- 异常与边界：① 点击重置后地址名称、类型、详细地址、行政区划、站点编码、联系人、联系方式恢复为空或全部；② 组织条件恢复为当前用户所属组织默认值；③ 重置后列表按默认条件重新加载。
- 反例：① 不允许重置后残留上一次的文本查询条件；② 不允许重置后组织范围变成未授权组织；③ 不允许只清空界面条件但列表仍按旧条件展示。

REQ-ADDR-04 列表展示

- 功能点：支持分页展示常用地址列表，展示序号、类型、地址名称、地址编号、站点编码、行政区划、详细地址、联系人、联系方式、组织、备注、更新时间、创建时间和操作。
- 异常与边界：① 进入页面默认展示当前组织全部数据，并按更新时间降序排列；② 列表默认每页 10 条，支持切换 20、50、100 条每页；③ 常规类型站点编码显示为“/”，其他类型显示后端返回的站点编码。
- 反例：① 不允许列表直接展示 createUser、updateUser 等用户 ID 字段；② 不允许常规地址展示虚假的站点编码；③ 不允许分页切换后丢失当前查询条件。

REQ-ADDR-05 组织数据范围

- 功能点：通过组织字段控制数据权限，列表默认按当前组织权限范围展示，不在表格顶部提供“当前组织/全部组织”切换。
- 异常与边界：① 当前组织为空或组织权限异常时应阻止查询并提示；② 列表、分页和导出均按当前权限范围生效；③ 非本组织或无操作权限的数据仅允许查看。
- 反例：① 不允许普通用户编辑或删除无权限组织的数据；② 不允许通过手动构造组织条件获取未授权数据；③ 不允许导出超出当前组织权限范围的数据。

REQ-ADDR-06 新增常规地址

- 功能点：支持手工新增常规地址，类型使用单选并单独展示在第一行，地址名称单独展示在第二行，详细地址行内并排展示行政区划自动带出项与详细地址地图选择项，录入联系人、联系方式和备注等信息。
- 异常与边界：① 类型、地址名称、行政区划、详细地址为必填项，缺失时阻止提交并提示；② 行政区划通过地图组件搜索或点击选点自动回填，不提供自行输入入口；③ 提交失败时保留用户已录入内容，便于修正后重新提交。
- 反例：① 不允许新增没有地址名称的常规地址；② 不允许手工录入行政区划绕过地图选择；③ 不允许备注超过 200 个字后仍提交。

REQ-ADDR-07 新增港口/码头地址

- 功能点：支持新增港口/码头类型常用地址，类型通过单选切换；选择类型后展示港口和码头字段，港口为下拉搜索选择，码头必须在选定港口后联动加载港口下属码头；选择码头后自动带出地址名称、行政区划、详细地址和站点编码，地址名称允许修改。
- 异常与边界：① 类型、港口、码头、地址名称、行政区划、详细地址为必填项；② 未选择港口时码头不可选择；③ 站点编码关联主数据自动带出，不在新增、编辑表单中手工维护。
- 反例：① 不允许未选择港口直接选择码头；② 不允许选择非当前港口下属的码头；③ 不允许用户手工修改港口/码头站点编码。

REQ-ADDR-08 新增铁路车站地址

- 功能点：支持新增铁路车站类型常用地址，类型通过单选切换；选择类型后展示车站名称下拉搜索选择，车站名称来源于铁路车站主数据；选择车站后自动带出地址名称、行政区划、详细地址和铁路车站编码，地址名称允许修改。
- 异常与边界：① 类型、车站名称、地址名称、行政区划、详细地址为必填项；② 车站名称必须从铁路车站主数据中选择；③ 站点编码关联主数据自动带出，不在新增、编辑表单中手工维护。
- 反例：① 不允许手工输入不存在的车站名称作为主数据来源；② 不允许铁路车站类型使用港口码头或机场编码；③ 不允许用户手工伪造车站编码完成提交。

REQ-ADDR-09 新增空港机场地址

- 功能点：支持新增空港机场类型常用地址，类型通过单选切换；选择类型后展示机场标准名称下拉搜索选择，机场标准名称来源于机场主数据；选择机场后自动带出地址名称、行政区划、详细地址和机场 IATA 编码，地址名称允许修改。
- 异常与边界：① 类型、机场标准名称、地址名称、行政区划、详细地址为必填项；② 机场标准名称必须从机场主数据中选择；③ 站点编码关联主数据自动带出，不在新增、编辑表单中手工维护。
- 反例：① 不允许手工输入不存在的机场标准名称作为主数据来源；② 不允许空港机场类型使用常规地址的“/”站点编码；③ 不允许将铁路车站编码作为机场站点编码。

REQ-ADDR-10 地址编号生成

- 功能点：系统为每条常用地址自动生成全局唯一地址编号，编号以 DZ 开头并按 5 位流水号递增。
- 异常与边界：① 新增提交时由系统生成地址编号，用户无需录入；② 并发新增时应保证地址编号不重复；③ 编辑地址时保留原地址编号不重新生成。
- 反例：① 不允许用户手工填写地址编号；② 不允许出现两个地址共用同一地址编号；③ 不允许编辑保存后地址编号从 DZ00001 变成新的流水号。

REQ-ADDR-11 地图选点与地址回填

- 功能点：新增、编辑地址时支持通过高德地图组件搜索和点击选点，自动回填行政区划，并可同步回填详细地址。
- 异常与边界：① 高德地图搜索无结果时保持当前输入内容并提示无匹配地址；② 用户重新选点后应覆盖原行政区划、详细地址和后台坐标信息；③ 高德地图组件加载失败时应提示用户稍后重试或重新打开弹窗。
- 反例：① 不允许未选择地图位置时回填行政区划；② 不允许在新增、编辑表单中展示或手工维护经纬度字段；③ 不允许详细地址与行政区划明显来自两次不同选点结果。

REQ-ADDR-12 查看地址详情

- 功能点：支持在操作列查看单条常用地址详情，展示该地址的基础信息、组织信息、地址信息和创建更新时间。
- 异常与边界：① 无查看权限时隐藏查看入口或禁止打开；② 记录已被删除时提示数据不存在并刷新列表；③ 无编辑权限或只读数据详情页保持只读。
- 反例：① 不允许查看详情时进入可编辑状态；② 不允许详情页展示用户 ID 代替组织或人员名称；③ 不允许已删除记录仍显示为可查看有效数据。

REQ-ADDR-13 编辑常用地址

- 功能点：支持编辑权限范围内的常用地址，维护类型、地址名称、联系人、联系方式、行政区划、详细地址和备注等信息。
- 异常与边界：① 无编辑权限或非可编辑组织数据时禁止编辑；② 类型使用单选展示，地址名称单独占一行，详细地址行内并排展示行政区划自动带出项与详细地址地图选择项；③ 保存成功后刷新列表并保留当前分页和查询条件。
- 反例：① 不允许编辑时修改地址编号；② 不允许在新增、编辑表单中展示来源主数据、经纬度或组织范围切换；③ 不允许备注超过 200 个字后仍保存。

REQ-ADDR-14 单条删除

- 功能点：支持在操作列删除单条常用地址，删除前进行二次确认并校验是否被业务数据引用。
- 异常与边界：① 点击删除后弹出确认提示，用户取消时不删除数据；② 删除前若已被业务数据引用则提示不可删除并保持原数据；③ 删除成功后刷新列表并提示删除成功。
- 反例：① 不允许未确认直接删除地址；② 不允许删除已被业务单据引用的地址；③ 不允许无删除权限用户看到或触发删除操作。

REQ-ADDR-15 批量删除

- 功能点：支持勾选多条常用地址后批量删除，删除前进行二次确认并逐一校验业务引用关系。
- 异常与边界：① 未勾选数据时点击批量删除应提示先选择数据；② 确认删除前系统逐条校验引用状态，已引用记录从删除队列跳过并提示；③ 删除完成后刷新列表并提示成功删除条数和因引用跳过条数。
- 反例：① 不允许批量删除时删除未被勾选的数据；② 不允许因部分记录被引用导致所有可删除记录都无法删除；③ 不允许越权批量删除其他组织数据。

REQ-ADDR-16 批量导出

- 功能点：支持批量导出常用地址数据，勾选多行时导出勾选数据，未勾选时按当前查询条件导出全部匹配数据。
- 异常与边界：① 导出字段与列表展示字段保持一致；② 导出范围受当前查询条件和组织权限限制；③ 导出失败时提示失败原因，不清空当前查询条件和勾选状态。
- 反例：① 不允许导出超出当前权限范围的数据；② 不允许导出文件缺少列表中的关键业务字段；③ 不允许未勾选时忽略当前查询条件导出全库数据。

REQ-ADDR-17 操作列权限控制

- 功能点：列表操作列固定支持查看、编辑、删除，并根据用户权限和数据范围决定按钮展示或可用状态。
- 异常与边界：① 无查看权限时不展示查看操作；② 无编辑或删除权限时隐藏对应操作；③ 只读组织数据仅保留查看，不允许编辑和删除。
- 反例：① 不允许前端显示了无权限按钮但点击后才提示失败；② 不允许只读数据出现编辑入口；③ 不允许批量按钮绕过行级权限控制。

## 通用规则

- 常用地址类型固定为常规地址、港口/码头、铁路车站、空港机场，新增和查询不得使用其他类型。
- 地址编号由系统自动生成，全局唯一，格式为 DZ 开头加 5 位递增流水号，用户不可手工录入或修改。
- 新增、编辑弹窗中类型使用单选并单独展示在第一行，地址名称单独展示在第二行。
- 新增、编辑弹窗中行政区划和详细地址放在同一行，行政区划自动带出，详细地址点击后弹出高德地图组件。
- 新增、编辑弹窗不展示来源主数据选择项，不展示或手工维护经纬度字段。
- 地址通过高德地图选点生成行政区划，可同步回填详细地址；经纬度作为后台坐标信息保留，不在列表和表单中展示。
- 港口/码头类型先选择港口再选择码头，码头为港口附属数据；铁路车站类型通过车站名称下拉搜索选择；空港机场类型通过机场标准名称下拉搜索选择。
- 港口/码头、铁路车站、空港机场选择对应主数据后自动带出地址名称、行政区划、详细地址和站点编码，其中地址名称允许用户修改，站点编码不在新增、编辑表单中手工维护。
- 列表默认按更新时间降序展示，默认每页 10 条，支持 20、50、100 条每页。
- 组织字段作为数据权限字段，列表顶部不提供“当前组织/全部组织”切换。
- 删除前必须校验是否被业务数据引用，已引用的记录不允许删除；批量删除时已引用记录跳过并提示。
- 备注类字段最多 200 个字，超过限制时前端阻止提交并给出明确提示。
- 用户可见场景不得直接展示 createUser、updateUser 等用户 ID 字段；涉及人员展示时优先使用姓名字段。
