# 常用地址需求卡

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 新增常规地址

- 功能点：支持手工新增常规地址，录入地址类型、地址名称、联系人、联系方式、详细地址、行政区划、经纬度和备注等信息。
- 异常与边界：①类型、地址名称、详细地址为必填项，缺失时阻止提交并提示；②经纬度通过地图选点产生，提交时经度保留 6 位且范围为 -180 到 180，纬度保留 6 位且范围为 -90 到 90；③提交失败时保留用户已录入内容，便于修正后重新提交。
- 反例：①不允许新增没有地址名称的常规地址；②不允许手工录入超出范围的经纬度，如经度 181 或纬度 -91；③不允许备注超过 200 个字后仍提交。

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

- 功能点：支持从港口/码头主数据选择记录生成常用地址，自动带出地址名称、详细地址、行政区划、站点编码和经纬度信息。
- 异常与边界：①未选择港口/码头主数据时阻止提交；②选择后地址名称默认填充港口/码头名称且允许修改；③站点编码自动带出港口/码头编码且不可修改。
- 反例：①不允许把港口/码头地址的站点编码改成其他编码；②不允许选择不存在或已失效的港口/码头主数据；③不允许港口/码头类型提交为常规地址的“/”站点编码。

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

- 功能点：支持从铁路车站主数据选择记录生成常用地址，自动带出地址名称、详细地址、行政区划、站点编码和经纬度信息。
- 异常与边界：①未选择铁路车站主数据时阻止提交；②选择后地址名称默认填充车站名称且允许修改；③站点编码自动带出铁路车站编码且不可修改。
- 反例：①不允许铁路车站类型使用港口码头或机场编码；②不允许手工伪造车站编码完成提交；③不允许已被主数据删除或停用的车站继续作为新增来源。

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

- 功能点：支持从空港机场主数据选择记录生成常用地址，自动带出地址名称、详细地址、行政区划、站点编码和经纬度信息。
- 异常与边界：①未选择空港机场主数据时阻止提交；②选择后地址名称默认填充机场名称且允许修改；③站点编码自动带出机场编码且不可修改。
- 反例：①不允许空港机场类型使用常规地址的“/”站点编码；②不允许将铁路车站编码作为机场站点编码；③不允许选择不存在或已失效的机场主数据。

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 位递增流水号，用户不可手工录入或修改。
- 常规地址通过地图选点生成详细地址、行政区划、经度和纬度；经度、纬度后台记录并在列表展示，保留 6 位小数。
- 港口/码头、铁路车站、空港机场地址从对应主数据选择生成，站点编码自动带出且不可修改，地址名称可在默认带出后调整。
- 列表默认按更新时间降序展示，默认每页 10 条，支持 20、50、100 条每页。
- 组织字段作为数据权限字段，普通用户默认查看当前组织数据，查看全部组织数据时按权限只读展示。
- 删除前必须校验是否被业务数据引用，已引用的记录不允许删除；批量删除时已引用记录跳过并提示。
- 备注类字段最多 200 个字，超过限制时前端阻止提交并给出明确提示。
- 用户可见场景不得直接展示 createUser、updateUser 等用户 ID 字段；涉及人员展示时优先使用姓名字段。
