产品需求文档:点位管理(v1.1 点位档案与设备落位基础)

使用说明:本文件是点位管理页的唯一需求来源,每条规则只在一处正式定义,其余章节以引用方式指向定义点。Markdown 版本(prd-location-management-user-flow.md)适合在仓库内查看;本 HTML 版本适合在浏览器中阅读。

术语约定:本文所称「点位」即设备落地的物理位置(门店 / 展位 / 楼宇等);「客户」「商户」在本页语境下同义,UI 沿用「所属客户」措辞。

0. 版本记录

版本日期主要变化
v1.12026-07-20表达规范化:正文移除代码变量名,统一改用中性产品语言
v1.02026-07-20首次沉淀点位管理需求:点位列表 + 概览统计、新增 / 编辑(含点位编码自动生成、GIS 经纬度与定位、点位分类)、搜索与分类筛选、删除;补充跨页联动(设备入场快速建点、设备搜索按点位名称匹配);记录租户隔离为「已设计、待落地」

1. 概述与目标

点位管理是后台维护「设备装在哪儿」的基础信息入口,是设备、订单、物料、故障等业务页据以定位与聚合的空间锚点。页面覆盖点位概览统计、点位列表、点位新增 / 编辑、按分类与关键词检索、点位删除。

页面需同时服务桌面端(左侧固定侧边栏 + 高密度列表)与移动端(抽屉式侧边栏、单列表单、卡片圆角化)。

目标:

非目标:

2. 数据模型与字段定义

本章是点位信息字段的唯一定义点。点位数据保存在浏览器本地存储中(原型阶段约定),跨页面共享同一份数据。

2.1 点位信息字段

字段必填说明
点位 ID系统生成形如 L001,三位零填充;新增时取现有最大序号 +1(见 2.3)
点位名称展示主标题,参与搜索
点位编码形如 k8298,全局唯一;默认自动生成、可重生成、可手改(见 2.2);参与搜索
所属客户关联客户资料中「启用」状态的客户;未选时列表显示「未关联商户」
点位状态运营中 / 暂停运营,默认「运营中」
点位分类展会点位 / 运营点位(见 2.4)
详细地址参与搜索
经度手填或定位回填,保留 6 位小数
纬度手填或定位回填,保留 6 位小数
GPS 来源标记系统生成填写了经纬度时记录「来自点位管理」,便于追溯坐标录入渠道
负责人点位负责人姓名
联系电话负责人联系电话
备注自由文本
创建时间系统生成新增时写入当天日期(年-月-日)

2.2 点位编码规则(唯一定义点)

2.3 点位 ID 生成

2.4 点位分类(唯一定义点)

2.5 概览统计口径

页面顶部四张统计卡的取值口径:

卡片口径
点位总数全部点位条数
运营中状态为「运营中」的点位数
设备总数设备数据总条数,无数据时回退展示 15
所属客户点位记录中去重后的非空所属客户数;无则回退为客户资料总数或 4

3. 用户流程

每个流程只列该流程特有的验收点;字段与规则见第 2 章(验收时一并回归)。

UF-001:进入点位管理并查看概览

描述: 作为运营人员,我希望进入页面后先看到点位规模与运营状态概览,再浏览点位列表。

主流程:

  1. 打开点位管理页,侧边栏「基础信息管理 › 点位管理」高亮。
  2. 首次进入(本地无点位数据)时自动写入默认演示点位,并做分类归一化与演示数据覆盖补齐。
  3. 顶部渲染四张统计卡(口径见 2.5)。
  4. 列表按当前搜索与分类筛选条件渲染全部点位。

验收:

点位管理页桌面端概览:四张统计卡、搜索栏与点位列表
UF-001 桌面端:统计卡(点位总数 / 运营中 / 设备总数 / 所属客户)+ 点位列表,列表条目含编码、客户、分类、地址、状态徽标与编辑 / 删除操作
点位管理页移动端视图:抽屉侧边栏收起,统计卡两列,列表纵向堆叠
UF-001 移动端(375px):侧边栏收为抽屉(☰),统计卡两列排布,列表条目纵向堆叠不横向滚动

UF-002:搜索与按分类筛选点位

描述: 作为运营人员,我希望用关键词或分类快速定位目标点位。

主流程:

  1. 在搜索框输入关键词,边输入边实时过滤。
  2. 关键词对点位名称、点位编码、详细地址做不区分大小写的子串匹配。
  3. 分类下拉选择「全部点位分类 / 展会点位 / 运营点位」,与关键词条件叠加生效。
  4. 无命中时列表区展示空状态(📍 图标 + 「暂无点位数据」)。

验收:

关键词「上海」+ 分类「展会点位」叠加筛选,仅命中一条
UF-002:关键词「上海」+ 分类「展会点位」叠加生效,5 条点位中仅命中「上海国家会展中心A馆」

UF-003:新增点位

描述: 作为运营人员,我希望登记一个新点位,系统尽量减少我的手工输入。

主流程:

  1. 点击右上角「➕ 新增点位」打开弹窗,标题为「新增点位」。
  2. 弹窗打开即:预填自动生成的点位编码、加载可选客户下拉、状态默认「运营中」、分类给出默认值、其余字段清空。
  3. 填写点位名称、详细地址(必填),按需选择所属客户、录入经纬度或点击「获取当前位置」、填写负责人 / 电话 / 备注。
  4. 点击「保存」:校验必填后生成点位 ID 写入点位数据,落库、刷新列表与统计、关闭弹窗,弹出「点位添加成功」。

验收:

新增点位弹窗:编码已预填,含分类、经纬度、获取当前位置等字段
UF-003:新增弹窗打开即预填自动生成的编码(图中 k9101)并附「重新生成」;必填项为名称 / 编码 / 地址,所属客户为可选;含点位分类、经纬度与「获取当前位置」(UF-004 入口)

UF-004:获取当前位置回填经纬度

描述: 作为在现场登记点位的人员,我希望一键用设备定位填入经纬度。

主流程:

  1. 在新增 / 编辑弹窗点击「获取当前位置」,按钮进入「定位中...」禁用态。
  2. 调起浏览器定位能力(高精度模式、10 秒超时)。
  3. 成功:经、纬度各保留 6 位小数回填;若地址为空则回填占位地址文案;提示「已获取当前位置」。
  4. 失败:按失败原因给出可读文案(权限拒绝 / 无法获取 / 超时 / 通用失败)。
  5. 无论成功失败,按钮恢复为「获取当前位置」可点击态。

验收:

UF-005:编辑点位

描述: 作为运营人员,我希望修改既有点位的信息。

主流程:

  1. 在列表条目点击「✏️ 编辑」,弹窗标题变为「编辑点位」并回填该点位全部字段(分类经归一化)。
  2. 修改后点击「保存」,就地更新对应记录并同步客户名称(依据当前所选客户)。
  3. 落库、刷新列表与统计、关闭弹窗,弹出「点位信息已更新」。

验收:

编辑点位弹窗:标题为编辑点位,字段已回填上海市中心店的数据
UF-005:编辑弹窗标题切换为「编辑点位」,名称 / 编码 / 客户 / 状态 / 分类 / 地址 / 负责人等字段按记录回填(图为「上海市中心店」)

UF-006:删除点位

描述: 作为运营人员,我希望移除不再使用的点位。

主流程:

  1. 在列表条目点击「🗑️ 删除」,弹出二次确认「确定要删除该点位吗?」。
  2. 确认后从点位数据中移除该记录,落库、刷新列表与统计,弹出「点位已删除」。

验收:

4. 交互与展示规则

5. 跨页联动

5.1 设备入场页快速新增点位

5.2 全站设备搜索支持点位名称

覆盖页面:总览 / 商品管理 / 菜单 / 物料 / 设备入场 / 人员管理。

6. 租户(商户)隔离现状

本节记录设计与现状的差异,供后续排期,不代表本期已交付。

7. 测试映射

能力测试文件现状
点位分类、编码自动生成、GIS 经纬度、客户可选、演示数据覆盖tests/locations.point-category.test.js全绿
设备入场快速建点(编码唯一、默认商户、定位、下拉刷新选中)tests/device-entry.location-quick-create.test.js全绿
设备搜索按点位名称匹配tests/device-search.location-name.test.js全绿
点位管理商户隔离tests/locations.merchant-scope.test.js红(未落地,见第 6 节)

8. 关联文件边界

说明
页面locations.html
数据存储浏览器本地存储:点位数据(本页主数据)、客户资料(客户下拉)、设备数据(设备总数统计)、后台菜单语言、登录信息
关联页面device-entry.html(快速建点)、设备搜索相关页(点位名称检索)
关联设计 / 计划docs/superpowers/specs/2026-05-12-merchant-tenant-isolation-design.mddocs/plans/2026-03-11-device-search-location-name.md