# 商户管理产品需求文档

版本：2026-09-11 更新版

本模块帮助平台运营建立、查找和维护商户档案，并让商户用户维护自己的联系资料与故障通知配置。本次重点纳入手动填写商户编号、编号唯一性校验、创建后锁定编号、关联删除保护与保存冲突提示。

## 1 目标与范围

平台超级管理员通过「基础信息管理 → 商户管理」管理全部商户；所属商户已确定的普通用户通过「我的商户」查看和维护本商户资料。

本期覆盖商户列表、搜索、新增、编辑、删除、我的商户、故障推送渠道和配置变更记录。点位、设备、人员的建立与关联分别在对应模块完成。本页负责维护商户档案及保护已有业务关联。

当前界面仍混用「客户」和「商户」：例如「新增客户」「客户编号」均指商户。本需求统一使用商户称谓，截图保留当前界面原文。

## 2 角色与操作边界

| 操作 | 平台超级管理员 | 所属商户用户 |
| --- | --- | --- |
| 查看范围 | 全部商户列表和统计 | 仅本商户资料卡 |
| 新增、搜索和删除 | 支持，删除受关联限制 | 无入口 |
| 修改商户名称 | 支持 | 只读，提示联系平台运营 |
| 设置商户编号 | 新增时可填写，创建后只读 | 只读 |
| 修改联系方式、地址、备注和推送配置 | 支持 | 可维护本商户 |
| 查看推送配置变更记录 | 支持 | 无入口 |

本角色矩阵描述产品访问要求。不能以隐藏按钮作为跨商户权限验收的唯一依据。

## 3 平台查看与查找商户

### 3.1 查看商户列表

进入商户管理后，显示客户总数、合作中、点位总数和设备总数四项概览。列表按头像、客户编号、客户信息、状态、操作展示；客户信息包含名称、联系人、电话与故障推送渠道。状态区分「合作中」与「已暂停」。

商户编号独立成列，便于平台识别同名或相似名称的商户。推送渠道展示邮箱推送、公众号推送或未配置推送；邮箱渠道同时显示通知邮箱。

![图1 平台商户列表与独立编号列](../screenshots/merchant-prd/01-list.png)

### 3.2 搜索商户

在搜索框输入商户名称、联系人或电话，列表随输入过滤；清空后恢复全部商户。英文名称与联系人搜索不区分大小写。没有匹配项时显示「暂无客户数据」。当前搜索不支持按商户编号检索，统计卡不会随搜索结果变化。

## 4 新增商户与编号规则

### 4.1 新增流程

1. 平台超级管理员点击「新增客户」。
2. 填写商户名称、商户编号、联系人和联系电话；四项均为必填。
3. 按需填写地址、备注并配置邮箱推送；新商户需先保存基础资料，再在人员管理配置公众号接收员工。
4. 点击保存。校验成功后关闭弹窗、显示成功提示并更新列表及统计；新商户默认「合作中」，记录创建日期。
5. 点击取消或关闭按钮放弃本次未保存内容。

![图2 新增商户与可编辑的建议编号](../screenshots/merchant-prd/02-create.png)

### 4.2 商户编号

| 规则 | 用户可感知的行为 |
| --- | --- |
| 建议值 | 打开新增弹窗时提供未占用的建议编号，如 C005；用户可改为符合规范的自定义编号 |
| 格式 | 字母 C 加至少三位数字，总长度最多 32 个字符，如 C005、C1000 |
| 输入整理 | 保存时去掉首尾空格，小写 c 转为大写 C |
| 唯一性 | 不得与已有商户编号重复，判断不区分大小写 |
| 历史关联占用 | 即使商户已不在当前列表，只要点位、员工或设备仍引用该编号，仍视为占用 |
| 创建后锁定 | 编辑时编号只读，不能通过编辑商户资料更换编号 |
| 历史兼容 | 历史商户的既有编号保留，不因新编号格式要求而阻止维护其他资料 |

建议编号从 C001 开始寻找未占用值，不保证按最后一条记录递增。建议值也必须在保存时再次校验。

### 4.3 校验与错误反馈

缺少必填项时提示「请填写必填项」；新编号格式不符时提示「商户编号格式不正确,请输入 C 加至少三位数字」；编号已占用时提示「商户编号已存在,请更换」。失败时保留弹窗和已输入内容，不新增商户。

![图3 重复编号保存被阻止](../screenshots/merchant-prd/03-duplicate.png)

## 5 编辑资料与我的商户

### 5.1 平台编辑商户

点击列表中的编辑按钮，弹窗带入现有资料。平台可修改商户名称、联系人、电话、通知配置、地址和备注；商户编号保持只读，并说明创建后不可修改。成功保存后显示「商户信息已更新」。平台修改名称后，已有商户相关展示名称应同步更新，商户身份与关联保持不变。

![图4 平台编辑商户 编号锁定](../screenshots/merchant-prd/04-edit.png)

### 5.2 我的商户

商户用户进入后仅显示本商户资料卡，包括名称、编号、合作状态、合作模式、联系人、联系电话、故障通知邮箱、故障推送渠道、地址、入驻时间和备注。未填写的一般信息显示短横线，未设置邮箱显示「未设置」。

![图5 我的商户资料卡](../screenshots/merchant-prd/05-profile.png)

点击「编辑资料」后可以维护联系资料和通知配置，名称与编号只读。商户名称下方提示由平台运营维护。保存后仍回到本商户资料卡。若找不到所属商户，显示「未找到你所属的商户信息,请联系管理员」。

![图6 商户用户编辑 名称与编号均只读](../screenshots/merchant-prd/06-profile-edit.png)

## 6 故障推送配置

邮箱推送与公众号推送可以同时启用，也可以均不启用。列表与资料卡应反映已保存的配置；截图中的邮箱均为演示地址。

### 6.1 邮箱推送

勾选邮箱推送后可填写通知邮箱，启用该渠道必须提供格式合法的邮箱。关闭邮箱推送时邮箱输入框禁用。当前保存还会校验已有的非空邮箱格式，邮箱不合法时阻止保存并提示检查。

### 6.2 公众号推送

公众号接收人从本商户员工中确定，员工必须账号启用、具有故障接收权限并已登记公众号接收身份。配置动作在人员管理完成，本商户表单不手动填写接收人名单。

新增商户尚未保存、或本商户没有符合条件的接收员工时，不允许新勾选公众号推送，并提示先保存商户基础资料或前往人员管理补充接收人。保存时重新检查，不能保存没有可达接收人的公众号推送配置。

### 6.3 自动调整与变更记录

当系统核对到已启用公众号推送的商户没有可达接收人时，自动关闭该渠道，保留其他渠道并记录调整。平台可通过「推送配置变更记录」查看最近记录和数量。记录包含时间、商户、调整类型与原因，最多保留最近 20 条；无记录时提示「暂无自动调整记录」。查看后确认可清空记录，取消则保留。

本页配置验收与实际消息送达验收分开进行；页面截图不作为消息已送达的证据。

## 7 删除与异常保护

### 7.1 删除商户

平台点击删除时，先判断是否仍关联点位、员工或设备。有任一关联时直接阻止，并提示「该商户仍被点位、员工或设备引用,请先解除关联」。没有关联时弹出删除确认；取消保留数据，确认且保存成功后移除商户并更新统计。

### 7.2 保存冲突与失败

如果当前页面打开后商户资料已在其他页面更新，保存和删除均应阻止覆盖，提示「商户数据已在其他页面更新,请刷新后重试」。保存失败时提示「商户数据保存失败,请重试」，原数据保留，不显示成功结果；编辑弹窗保留，便于用户处理后重试。

## 8 验收清单与本期边界

| 场景 | 验收结果 |
| --- | --- |
| 平台进入商户管理 | 可见统计、完整商户列表、编号列和管理入口 |
| 商户用户进入 | 仅见所属商户；无全平台列表和新增删除入口 |
| 新增并手填 c1000 | 保存后编号为 C1000，商户出现在列表 |
| 编号为空、格式错误或重复 | 阻止保存，错误提示清晰，保留输入 |
| 历史编号仍有关联 | 不能被新商户复用 |
| 编辑已有商户 | 编号不可改变；商户用户也不能改名称 |
| 商户名称由平台修改 | 相关展示名称同步，原业务关联不变 |
| 邮箱推送未填合法邮箱 | 阻止保存 |
| 公众号推送没有有效接收员工 | 不允许新启用，保存时再次阻止无效配置 |
| 商户仍关联点位、员工或设备 | 禁止删除并解释原因 |
| 删除确认取消 | 不删除、不改变统计 |
| 其他页面先更新或保存失败 | 不覆盖新数据、不虚报成功 |
| 所属商户不存在 | 显示联系管理员的空状态 |

当前页面只展示合作模式和合作状态，未提供编辑合作模式、暂停或恢复合作的操作入口；本次不将这些操作写成已支持。当前也未提供分页、批量导入导出和按编号搜索。

统计卡中点位和设备数量存在演示兜底数据。正式验收须使用真实业务数据确认统计口径，不能将截图中的 8 个点位、15 台设备视为真实统计结果。

## 9 本次更新与截图说明

本次纳入商户编号手动输入、格式整理与唯一性、历史关联占用、编号不可变更、删除关联保护、跨页面保存冲突、角色区分和故障通知渠道。

截图于 2026-09-11 从当前本地原型实际采集，使用演示商户，桌面视口为 1440 × 1080。图1至图6依次对应平台列表、新增表单、重复编号、平台编辑、我的商户与商户编辑。截图反映当前界面，移动端效果需另行验收。

## 10 页面字段字典

本字典覆盖商户管理列表、我的商户资料卡、新增与编辑弹窗、统计及推送变更记录。同一业务字段在不同位置使用不同名称时合并说明；按钮与页面标识另表说明，避免与商户档案字段混淆。图1至图6可作为下表对应区域的参考截图。

「必填」指保存商户资料时必须提供；「只读」指本页不能修改；未单列长度限制的字段，当前页面未提供明确的最大长度约束。示例仅用于解释含义。

### 10.1 商户档案字段

对应图1的列表、图2和图4的管理表单、图5和图6的我的商户。

| 页面字段及别名 | 业务含义与示例 | 填写与编辑规则 | 显示与空值规则 |
| --- | --- | --- | --- |
| 商户名称／客户名称 | 商户对外或运营使用的名称，如「星巴克咖啡」；不是唯一身份凭证 | 必填；去除首尾空格；平台可新增和修改；商户用户只读。当前不校验名称唯一性 | 显示在列表客户信息、资料卡标题及名称行；资料卡缺失时显示「-」 |
| 商户编号／客户编号／编号 | 区分商户并维系点位、员工和设备归属的唯一编号，如 C001 | 必填；平台新增时提供可修改的建议值；C 加至少三位数字，总长不超过32字符；去首尾空格并将字母转大写；重复或仍有关联的历史编号不可使用；创建后所有角色只读 | 列表独立编号列、资料卡标题与编号行、表单中均展示同一编号；历史编号原样保留 |
| 联系人 | 负责本商户日常业务沟通的人员姓名，如「张经理」；填写联系人不会自动建立员工账号或故障接收权限 | 必填；去除首尾空格；平台和本商户用户可编辑 | 列表、资料卡与表单显示；资料卡缺失时显示「-」 |
| 联系电话／列表中的电话 | 联系人的业务联系电话，如 13800138001；不是自动开通的登录账号 | 必填；去除首尾空格；平台和本商户用户可编辑；当前仅检查非空，不限定为11位手机号，也不校验唯一性 | 列表、资料卡与表单显示；资料卡缺失时显示「-」 |
| 客户地址／商户地址 | 商户的联系或经营地址，如「上海市浦东新区」；不等同于旗下所有设备点位地址 | 选填；去除首尾空格；平台和本商户用户可编辑；本页不要求地图定位 | 表单与资料卡显示；资料卡为空时显示「-」 |
| 备注 | 商户档案补充说明，如「重点客户」；不作为权限或合作状态的判断条件 | 选填；多行文本；去除首尾空格；平台和本商户用户可编辑 | 资料卡备注行及顶部摘要展示；备注行为空时显示「-」，顶部不拼接空备注 |
| 合作模式 | 商户与平台的经营合作分类，枚举值为「自营」「独立」「代理」 | 本页只读，没有新增或修改入口；新增商户当前不会自动填写合作模式 | 我的商户资料卡与顶部摘要展示；缺失时字段显示「-」，摘要省略该项 |
| 状态／合作状态 | 商户档案的合作状态，当前展示「合作中」「已暂停」；不是设备在线状态或员工账号状态 | 本页只读，没有暂停或恢复入口；新增商户默认合作中 | 列表与资料卡显示状态标识；合作中为绿色，已暂停为灰色。当前未提供未知状态标签 |
| 入驻时间／入驻日期 | 商户档案记录的入驻日期，如 2024-01-15；新增时记录创建日期，不代表合同生效日 | 系统填写，本页只读；既有档案保留已有日期 | 我的商户资料卡及顶部摘要展示，精确到日；缺失时字段显示「-」，摘要省略该项。当前新增日期按 UTC 日期生成，跨时区日期口径需在正式验收中确认 |
| 头像／商户首字标识 | 帮助识别商户的文字图标，不是上传的商户 Logo | 系统生成，只读，本页没有上传入口 | 列表取商户名称首字；资料卡优先取名称首字，名称缺失时取编号首字，两者都缺失时显示问号 |
| 客户信息 | 列表中的组合展示区，不是需要单独填写的字段 | 自动组合商户名称、联系人、电话和通知渠道 | 对应图1；各项含义及修改规则见本字典，不单独保存一份「客户信息」 |
| 资料卡顶部摘要 | 合作模式、入驻日期和备注的简要汇总 | 系统组合，只读；修改可维护的原字段后相应更新 | 对应图5；各项以分隔符连接，省略空项；全部缺失时显示「尚未填写补充信息」 |

### 10.2 故障通知字段

对应图1的渠道标签、图2和图4的表单、图5和图6的商户资料。渠道配置表示接收意愿和可达条件，不表示故障消息已经发送或送达。

| 页面字段及选项 | 业务含义 | 填写与编辑规则 | 显示与空值规则 |
| --- | --- | --- | --- |
| 故障推送渠道 | 选择商户希望通过哪些方式接收设备故障通知 | 选填、多选；支持邮箱推送、公众号推送，可同时选择或都不选；平台和本商户用户可维护 | 表单以复选框显示；列表和资料卡以渠道标签显示；均未选择时显示「未配置推送」 |
| 邮箱推送 | 是否通过故障通知邮箱接收故障信息 | 开关选项；新增默认不勾选；勾选后邮箱可输入且必须合法；取消勾选后邮箱框禁用，不自动清除已填邮箱 | 已启用时显示「邮箱推送」并附邮箱地址；保留邮箱但关闭渠道，不代表仍启用邮件通知 |
| 故障通知邮箱 | 接收该商户设备故障通知的邮箱，如 ops@example.com；独立于联系人的电话和员工账号 | 开启邮箱推送时条件必填；应填写一个合法邮箱；保存时去除首尾空格；即使关闭邮箱渠道，已有非空邮箱仍会进行格式检查 | 表单和资料卡显示；资料卡为空时显示「未设置」；邮箱推送标签在启用时附带该地址 |
| 公众号推送 | 是否向本商户符合条件的员工发送公众号故障通知 | 开关选项；新增时不可勾选，须先保存商户再配置员工；没有可达接收人时不可新启用；保存时重新检查 | 启用后显示「公众号推送」标签；不可启用时选项置灰并给出原因；已启用但接收人失效时可能被自动关闭并记入变更记录 |
| 公众号接收人说明 | 说明接收人员由本商户旗下账号启用、拥有故障接收权限且登记了公众号接收身份的员工构成 | 是说明文字，不是本页可填写的名单；人员信息须在人员管理中维护 | 对应图2、图4、图6的渠道下方说明；本页不逐一列出员工姓名或接收身份值 |

### 10.3 统计与搜索字段

对应图1。统计为平台商户管理视图的整体概览，不随名称、联系人或电话的搜索结果变化；我的商户不展示这组统计。

| 页面字段 | 业务含义与单位 | 当前计算或输入规则 | 默认值与边界 |
| --- | --- | --- | --- |
| 客户总数 | 当前商户档案总量，单位：个商户 | 包含合作中与已暂停商户；成功新增或删除后更新 | 不是当前搜索命中数量，也不是历史累计入驻量 |
| 合作中（统计卡） | 合作状态为合作中的商户数量，单位：个商户 | 仅统计合作中的商户，不包含已暂停商户 | 与列表行的合作状态含义一致，数字本身只读 |
| 点位总数 | 平台概览中的点位数量，单位：个点位 | 当前原型依据设备数据中出现的点位去重统计，并非直接清点全部点位档案 | 没有可统计点位时当前显示演示值8；无设备点位可能不计入。正式验收需确认真实业务口径，不将演示值作为真实结果 |
| 设备总数 | 平台概览中的设备数量，单位：台 | 当前原型按设备数据记录数量统计，不按合作状态或搜索条件过滤 | 无设备记录时当前显示演示值15；正式验收应核实实际数量及零值表现 |
| 搜索客户名称、联系人、电话 | 用于快速缩小商户列表的查询词，不属于商户档案 | 选填；输入即过滤；支持名称、联系人、电话的包含匹配；名称和联系人中的英文字母不区分大小写；不支持按商户编号查找 | 空输入显示全部商户；无匹配时显示「暂无客户数据」；不修改商户资料和统计卡 |

### 10.4 推送配置变更记录字段

平台通过页面右上角「推送配置变更记录」查看，记录反映渠道调整，不是故障事件列表、消息送达记录或全部商户操作日志。

| 页面字段 | 业务含义 | 来源与显示规则 | 空值或保留规则 |
| --- | --- | --- | --- |
| 变更记录数量 | 当前保留的渠道配置调整记录条数 | 按记录条数显示在入口角标，不按受影响商户去重 | 0条时隐藏角标；最多保留最近20条；不代表未读数量 |
| 记录序号 | 当前记录列表中的阅读顺序 | 从1开始编号，新记录优先显示 | 仅帮助阅读，不是持久业务编号 |
| 调整时间 | 本次渠道自动调整或运营确认的发生时间 | 自动记录，展示日期与时间，按当前查看环境的本地时间显示 | 时间缺失时显示「-」 |
| 商户 | 本次调整影响的商户 | 优先显示记录中的商户名称，缺少名称时显示商户编号 | 属于记录当时的商户标识，不是可编辑输入框 |
| 调整类型 | 区分由系统自动校对产生的变更与运营确认的变更 | 当前界面显示「自动校对」或「运营确认」 | 只读，不提供类型筛选或手动改写 |
| 调整原因 | 解释为什么改变推送渠道，例如没有可达的公众号接收员工 | 来自本次变更记录；当前弹窗可能直接显示内部原因标记，产品含义按本字段说明理解 | 不代表实际故障原因；可读原因文案仍需完善，不能将内部标记视为面向用户的最终文案 |

### 10.5 页面标识与操作入口

下列元素不属于商户档案字段，但会影响字段展示或保存，补充说明其用途。

| 页面名称或控件 | 含义与操作结果 | 适用范围及限制 |
| --- | --- | --- |
| 商户管理／我的商户 | 同一模块按角色显示不同标题和资料范围 | 平台超级管理员查看商户管理，所属商户用户查看我的商户 |
| 新增客户 | 打开空白新增表单并提供建议商户编号 | 仅平台；不代表点击后就已创建商户 |
| 操作列中的编辑 | 打开当前行商户的资料表单 | 仅平台列表；编号只读 |
| 操作列中的删除 | 请求删除当前行商户 | 仅平台；先检查点位、员工和设备关联，再要求确认 |
| 编辑资料 | 打开当前所属商户的编辑表单 | 我的商户视图；商户名称和编号只读 |
| 保存 | 校验必填项、编号、邮箱和推送条件后保存资料 | 成功后关闭弹窗并更新页面；失败时保留输入，避免误认为已经保存 |
| 取消／关闭按钮 | 关闭新增或编辑弹窗 | 放弃本次未保存修改，不删除原商户 |
| 必填星号 | 标识保存所需的基础字段 | 名称、编号、联系人、联系电话带星号；邮箱属于随渠道启用条件变化的必填字段 |
| 名称锁定说明／编号锁定说明 | 解释字段不能修改的原因 | 名称说明用于商户用户；编号说明用于编辑已有商户 |
| 推送配置变更记录 | 打开最近的渠道调整记录 | 仅平台；无记录时提示暂无自动调整记录；查看后确定清空，取消保留 |
| 删除确认中的确定／取消 | 决定是否执行已通过关联检查的删除 | 确定才尝试删除；取消保持原数据 |
| 成功或错误提示 | 告知保存、删除是否成功或被什么规则阻止 | 临时反馈，不是商户档案字段；具体情形见第4和第7节 |
| 未找到所属商户／暂无客户数据 | 解释资料卡或列表没有可展示记录的原因 | 前者引导联系管理员；后者用于空列表或搜索无结果，两者不应混为同一业务状态 |

页面公共框架中的登录姓名、登录电话用于识别当前登录者，不是正在查看的商户联系人；「中文／EN」用于切换界面语言，「退出」用于退出当前登录，「☰」用于小屏幕展开或收起导航。这些公共控件不属于商户资料编辑范围。

## 11 商户关联模块补充需求

商户功能上线后，点位、人员和设备不能继续按平台全量数据独立展示。三类数据都必须有清晰的商户归属，且列表、统计、创建、编辑、删除和详情操作使用同一套归属规则。本节是对点位管理、人员管理和设备管理的补充要求，不改变前文商户档案的字段定义。

当前检查结论如下：

| 模块 | 现有基础 | 需要补充的重点 | 优先级 |
| --- | --- | --- | --- |
| 点位管理 | 已有所属客户、点位编码、分类、地址、负责人等字段 | 商户隔离、商户绑定、编码唯一性、设备引用保护、人员责任关系 | P0 |
| 人员管理 | 已有角色、商户范围、指定设备范围、故障通知接收条件 | 平台管理员跨商户视图、商户状态联动、点位责任范围、变更审计 | P1 |
| 设备管理 | 已有按人员设备范围过滤的列表和点位快速创建入口 | 详情与操作的二次权限校验、商户和点位标识统一、转移与历史保护 | P0 |

### 11.1 三类数据的归属关系

| 关系 | 产品规则 | 验收要求 |
| --- | --- | --- |
| 商户—点位 | 一个点位只能归属一个商户，也可以暂时处于「待分配」状态。普通商户用户只能看到本商户点位；平台管理员可查看全部点位，包括待分配和归属异常的点位 | 用两个商户账号分别登录，列表、搜索、统计、编辑和删除都不能看到或影响对方点位；平台管理员可以找到异常数据并完成归属修复 |
| 商户—人员 | 人员账号必须有稳定的商户归属。平台级人员可以不绑定具体商户；商户人员只能服务一个商户，不能通过修改表单跨商户转移 | 商户编号变化只更新展示，不改变人员归属；人员编辑、禁用和删除均按当前商户权限校验 |
| 商户—设备 | 设备必须有唯一、可追溯的商户身份，设备列表、详情、故障、销售、远程控制和配置操作都使用同一商户归属 | 商户、点位和设备数据出现编号不一致时，禁止继续产生新的关联，并给平台管理员显示修复提示；不能因为页面参数变化绕过商户限制 |
| 点位—设备 | 设备可以绑定一个点位；修改点位时保留变更前后的点位、操作人和时间。删除点位前必须处理设备引用 | 被设备使用的点位不能直接删除；先完成设备换绑或解除绑定后才允许删除，历史记录仍能还原原点位 |

当前原型同时出现了商户编号和设备侧历史商户键两种表达方式。正式实现前必须确定一个正式商户编号作为跨模块关联依据，并由所有模块统一使用；历史数据需要提供一次性映射和异常清单，不能由各页面各自猜测对应关系。

### 11.2 点位管理补充需求（P0）

#### 11.2.1 列表和统计

1. 普通商户用户进入点位管理后，只展示本商户点位；搜索、分类筛选、状态筛选和统计卡都只计算本商户数据。
2. 平台管理员可以按商户筛选，也可以查看全部点位。待分配点位和商户归属异常点位只对平台管理员可见，并显示明确的异常状态。
3. 点位总数、运营中点位数和设备总数必须使用真实的商户范围数据计算；没有数据时显示 0，不使用演示数字代替真实结果。
4. 点位列表至少展示商户名称或商户编号，避免平台管理员在不同商户存在同名点位时无法区分。

#### 11.2.2 新增和编辑

1. 商户用户新增点位时，商户归属自动使用当前商户且不可修改；表单不提供切换到其他商户的入口。
2. 平台管理员新增点位时，商户归属为必填；如果选择待分配，必须填写待分配原因和后续处理人。
3. 编辑点位时重新校验当前用户是否仍有该商户权限。通过列表隐藏点位不能替代保存时的权限校验。
4. 点位编码在同一平台内必须唯一，比较时忽略首尾空格和英文字母大小写；保存失败时明确指出冲突的商户和点位。
5. 已被设备使用的点位编码原则上不可直接修改。确需修改时，要同步更新设备当前关联并保留点位变更历史，不能产生无归属设备。
6. 经度和纬度必须成对填写并在有效范围内；只填写一项、超出范围或定位失败时不得保存为有效坐标。
7. 「负责人」建议从同一商户的人员账号中选择，并保存人员编号和当时的展示姓名；如本期仍保留自由文本，必须在字段说明中明确它只是联系电话快照，不代表权限或责任授权。

#### 11.2.3 删除和异常处理

1. 被设备引用的点位不可直接删除，删除提示需列出受影响设备数量，并引导先换绑或解除设备。
2. 没有设备引用的点位删除后仍需保留操作记录，包括点位编号、原商户、操作人、时间和删除原因。
3. 商户暂停或删除时，旗下点位进入只读或待处理状态，具体状态必须在商户生命周期策略中统一定义，不能继续被普通用户新增设备绑定。

### 11.3 人员管理补充需求（P1）

1. 商户管理员和普通商户人员只能查看、编辑本商户人员；平台管理员需要提供「全部商户」和按商户筛选的人员视图，不能默认只显示某一个当前商户。
2. 创建人员时，非平台管理员的商户归属固定为当前商户；平台管理员可以选择商户或平台级角色。保存、编辑、禁用和删除时都要再次检查商户权限。
3. 人员可以被授权访问本商户的设备，但设备选择器只能显示同一商户设备；保存时重新检查设备仍属于该商户，不能只依赖页面上的已选列表。
4. 角色和设备范围之外，补充可选的「负责点位」范围。启用后，人员只能查看和处理其负责点位下的设备及故障；平台级角色可跨点位处理。若本期不做点位级权限，应在页面上明确负责人字段不产生访问权限。
5. 商户暂停时，商户人员的登录和操作状态需要有明确策略：默认停止新增和变更操作，并给出暂停原因；是否允许只读查看由业务确认。商户恢复后按暂停前账号状态恢复，不能自动启用原本已禁用的账号。
6. 商户删除前必须检查人员引用；删除或迁移人员时，需要处理其负责点位、设备范围和故障通知接收资格，不能留下失效的故障接收人。
7. 人员的商户、角色、点位范围、设备范围、故障通知资格和账号状态变更必须记录操作人、时间、变更前后值和原因，便于追查越权或漏通知问题。

### 11.4 设备管理补充需求（P0）

#### 11.4.1 可见范围和操作权限

| 角色或范围 | 可见设备 | 可执行操作 |
| --- | --- | --- |
| 平台管理员 | 全部设备，包括未分配和归属异常设备 | 查看、修复归属、换绑点位、处理设备配置和平台允许的远程操作 |
| 平台运营人员 | 按平台授权查看设备 | 仅执行已授权的设备、故障和运营操作；不能借此修改人员商户归属 |
| 商户管理员 | 本商户全部设备 | 查看和管理本商户设备及点位绑定 |
| 指定设备人员 | 已分配给本人且仍属于本商户的设备 | 仅查看和处理授权设备；不能通过详情链接访问其他设备 |

列表过滤只是入口体验，设备详情、销售开关、远程操作、录入信息、广告屏、温度、物料和故障记录等操作都必须再次校验当前人员和设备的商户、点位及设备范围。无权访问时统一提示「无权操作该设备」，不返回设备敏感信息。

#### 11.4.2 点位绑定、转移和历史

1. 从设备详情快速创建点位时，点位商户自动使用设备商户；普通商户用户不能选择其他商户，也不能通过修改地址或名称改变商户归属。
2. 设备选择点位时，只显示同一商户且状态可用的点位；点位归属异常、商户已暂停或待删除时不可新绑定。
3. 设备转移商户必须由平台管理员发起，采用「原商户—目标商户—生效时间—原因—影响人员」的确认流程；转移后原商户人员立即失去设备访问权。
4. 设备换绑点位时保留历史点位和变更原因；点位删除、编码变更或商户转移不能静默改写历史故障、销售和维护记录。
5. 未录入、离线或归属异常设备要有单独状态，不应通过「未关联点位」掩盖商户归属问题；平台管理员可批量查看待处理清单。

#### 11.4.3 数据和统计

1. 商户详情中的设备总数、点位设备数和设备状态统计必须按商户真实数据计算，并与设备管理筛选结果一致。
2. 设备的商户编号、点位编码和页面展示名称必须来自同一关联关系；发现设备指向不存在点位、点位指向不同商户或商户不存在时，显示归属异常并阻止继续产生关联。
3. 设备批量导入、批量换绑和批量配置（若后续提供）必须逐条校验商户范围，部分失败时返回逐条失败原因，不能整批静默成功。

### 11.5 跨模块验收清单

| 场景 | 预期结果 |
| --- | --- |
| 商户 A 登录查看点位、人员和设备 | 只看到商户 A 数据，统计与列表行数一致 |
| 商户 A 直接打开商户 B 的设备详情或操作链接 | 被拒绝且不返回商户 B 的设备信息 |
| 商户 A 尝试把点位或人员保存到商户 B | 保存失败，商户归属保持不变并给出原因 |
| 平台管理员筛选商户 B | 点位、人员、设备三个模块均只展示商户 B；切换「全部商户」后可查看待分配和异常数据 |
| 删除仍被设备使用的点位 | 删除被阻止，提示受影响设备并引导换绑 |
| 商户暂停 | 新增绑定、人员变更和设备运营操作按统一策略被限制；页面说明限制原因 |
| 商户编号、点位编码或设备归属不一致 | 标记归属异常，禁止继续建立新的跨商户关联，并提供平台修复入口 |
| 人员失去设备或故障通知权限 | 立即停止对应设备操作和通知接收，记录变更，不能继续使用旧页面完成操作 |

本节完成后，点位、人员和设备才具备与商户管理一致的租户边界。实现阶段应优先完成点位商户隔离、设备详情操作复核和关联标识统一，再补充人员的点位责任范围、商户状态联动和审计记录。
