Files

156 lines
11 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 账户、门店管理与水印管理需求
> 状态:讨论中。本文只定义产品需求、页面与状态口径;不预设数据库表、接口路径或技术栈。
## 1. 本期范围与导航
用户登录后显示左侧一级菜单:在线商品、采集箱、店铺管理、水印管理、定价工具。
本轮细化账户、店铺管理和水印管理。在线商品、采集箱、定价工具只确定入口,功能在后续单独讨论。
默认产品形态是一个账户可管理多个店铺;店铺目前先接入 Ozon,但不能把页面或领域名称永久写死为 Ozon,以便后续增加其他平台。
## 2. 账户注册与登录
### 2.1 注册
注册页字段只有手机号和密码,均为必填:
| 字段 | 规则 |
|---|---|
| 手机号 | 使用国家区号 + 手机号的标准化格式保存;同一手机号只能注册一个账户。首期注册页默认中国区号,但数据模型和界面需支持后续扩展。 |
| 密码 | 由后续安全设计确定最终长度与复杂度;页面需要二次输入密码并提示规则。密码只可安全散列存储,绝不回显。 |
首期注册成功即可登录使用。短信验证和风控验证不在首期流程执行,但要预留“手机号是否已验证”和“注册/登录风控结果”的状态,未来加功能时不改变账户主流程。
### 2.2 登录与会话
用户用手机号和密码登录。登录成功进入默认工作空间与首页;若后续一个账户拥有多个工作空间,再增加切换入口。首期需要提供退出登录;忘记密码、短信登录、第三方登录、设备管理和多因素认证均不在本轮范围。
### 2.3 全局平台与当前店铺上下文
平台和当前店铺是全站工作上下文,不在每个业务页面重复选择。页头在用户信息左侧放置“平台选择器”;用户切换平台后,菜单、类目、物流商、佣金规则和页面数据均切换到该平台范围。
在平台下有多个已授权店铺时,系统同时使用该平台的默认店铺作为“当前店铺”;后续可在同一页头区域增加店铺切换。新用户进入一个平台时优先选中该平台默认店铺。定价方案、商品和上架任务均从此全局上下文读取平台与店铺,避免表单中出现相互矛盾的平台选择。
## 3. 店铺管理
### 3.1 列表页面
入口为“店铺管理”。页面左上方有“添加店铺授权”按钮;列表按添加时间倒序,支持空状态。字段如下:
| 列 | 展示/来源 | 说明 |
|---|---|---|
| 序号 | 当前列表序号 | 仅是 UI 序号,不作为店铺标识。 |
| 店铺名称 | 用户填写 | 允许编辑,不能为空。 |
| 店铺 Client ID | 用户填写 | Ozon `Client-Id`;可完整显示,但不应把 API Key 放在列表或详情中。 |
| 密钥过期时间 | 平台可提供时同步 | 现有 Ozon Seller API 资料仅说明 `Api-Key` 由卖家后台生成、只显示一次,未发现可读取密钥过期时间的接口。因此首期展示 `—`;同时建议在详情/编辑页显示“最近验证时间”和“凭据验证状态”。不能用本系统添加时间推算到期。 |
| 商品限额 | 平台可提供时同步 | 指一家门店可铺货的商品数量上限。现有资料未确认 Ozon 可返回该配额;首期显示 `—`,不得把当前商品数量误作限额。 |
| 货币类型 | 用户选择 | 首期提供人民币 `CNY` 和俄罗斯卢布 `RUB`;其他币种由后台配置后才显示。一个店铺只有一个默认结算/计价币种。 |
| 默认店铺 | 系统状态 | 每个工作空间最多一个默认店铺;设为默认会自动取消原默认店铺。 |
| 仓库数量 | 平台同步 | Ozon 可通过 `POST /v1/warehouse/list` 获取仓库数组,列表显示最近一次成功同步的数量;未同步、凭据失效或请求失败时显示 `—` 并保留最近同步时间。 |
| Cookie 状态 | 预留字段 | Ozon 商品发布使用 `Client-Id + Api-Key` 的 Seller API 鉴权,不需要浏览器 Cookie。因此首期此列保持空白;只有未来接入网页自动化等 Seller API 覆盖不到的能力,才增加 Cookie 授权、加密保存、失效检测与更新入口。 |
| 状态 | 系统状态 | `验证中`、`正常`、`凭据失效`、`同步异常`、`已停用`。添加/更新凭据后先验证再置为正常。 |
| 绑定水印 | 关联状态 | 显示已绑定的水印模板名称,未绑定时显示“未绑定”。 |
| 添加时间 | 系统时间 | 显示店铺创建时间。 |
| 操作 | 用户操作 | `绑定水印`、`编辑`、`删除`。删除必须二次确认,首期建议软删除:不再出现在默认列表,但保留关联商品和操作审计。默认店铺删除前必须先指定另一店铺为默认,或在没有其他店铺时允许默认店铺为空。 |
“仓库数量”的来源已经在现有 Ozon 资料中确认。密钥过期时间和商品限额如果无法由平台获得,统一展示 `—`,不推算、不猜测;Cookie 不是商品发布所需的 Seller API 凭据,首期保持空白。
### 3.2 添加店铺授权
点击“添加店铺授权”弹出表单,字段顺序固定如下:
| 字段 | 必填 | 规则 |
|---|---:|---|
| 店铺名称 | 是 | 用户自定义名称。 |
| Client ID | 是 | Ozon `Client-Id`。 |
| API 密钥 | 是 | 仅提交一次给服务端验证和加密保存;保存后永不在 UI 或接口响应中返回明文。 |
| 货币类型 | 是 | 首期仅 `CNY`、`RUB`;由可配置币种清单驱动,默认建议 `RUB`。 |
| 是否默认店铺 | 否 | 新账户的首家店铺强制成为默认;其他店铺由勾选决定。 |
| 备注 | 否 | 仅供账户内管理,不对平台发送。 |
提交后系统必须用该凭据调用一个低风险 Ozon API 进行校验,并拉取仓库列表;验证失败时不得把店铺标为正常,错误提示不能包含 API Key。首期先按 Ozon `Client-Id + Api-Key` 接入,未来其他平台在同一“添加店铺授权”入口内按平台显示各自表单。
### 3.3 绑定水印
点击列表操作“绑定水印”弹出对话框:
- 店铺名称:只读,不可修改。
- 水印:下拉列表,包含当前账户可用的水印模板,也可以选择“暂不绑定”。
- 确认后,该店铺后续上架商品时默认使用此模板处理商品图片;已有图片不会被自动重写。
一个店铺首期只可绑定一个默认水印;同一水印模板可以绑定给多个店铺。
### 3.4 编辑与删除
编辑复用添加表单,但 API Key 默认不显示;用户只有重新输入新 Key 时才更新凭据并触发验证。删除只处理本系统的店铺连接,不会删除 Ozon 平台店铺、商品或仓库。
## 4. 水印管理
### 4.1 列表页面
页面左上方有“添加水印模板”按钮。列表按创建时间倒序,列为:序号、水印名称、水印类型、水印内容、水印位置、创建时间、操作。
| 列 | 说明 |
|---|---|
| 水印名称 | 模板名称,在当前账户内唯一。 |
| 水印类型 | `文字水印` 或 `图片水印`。 |
| 水印内容 | 文字水印展示文字内容;图片水印展示缩略图/文件名,不显示原始存储路径。 |
| 水印位置 | 九宫格位置,以清晰中文名展示,如“右下”。 |
| 操作 | `查看效果`、`编辑`、`删除`。 |
删除已被店铺绑定的模板时,必须二次确认并说明影响;确认删除后应解除所有店铺绑定,而不是让任务继续引用一个已删除的模板。已生成的历史图片不受影响。
### 4.2 添加/编辑水印模板
点击“添加水印模板”打开弹窗。先选择水印类型,表单随类型切换;编辑时保留原类型和参数,并支持更换图片或文字。模板名称与水印类型始终必填。
共同字段:
| 字段 | 规则 |
|---|---|
| 模板名称 | 必填;当前账户内唯一。 |
| 水印类型 | 必填,文字或图片。切换类型时需确认,因为原类型专属字段会被清空。 |
| 不透明度 | 使用 Ant Design Slider;取值 0%–100%,预览同步更新。 |
| 水印位置 | 九宫格单选:左上、上中、右上、左中、居中、右中、左下、下中、右下。 |
| 预览效果 | 基于固定演示底图实时渲染位置、缩放和透明度;首期仅预览,不写入商品图。 |
图片水印专属字段:
| 字段 | 必填 | 规则 |
|---|---:|---|
| 上传图片 | 是 | 上传 PNG/JPG/WebP;透明底 PNG 是推荐格式。具体大小、像素与文件大小限制由媒体模块确定。 |
| 图片缩放 | 是 | 使用 Ant Design Slider;首期建议取值 10%–200%,表示相对演示底图短边的比例。 |
文字水印专属字段:
| 字段 | 必填 | 规则 |
|---|---:|---|
| 文字内容 | 是 | 允许的最大长度与禁用字符由媒体模块确定。 |
| 字体 | 是 | 由服务端返回的、已随渲染服务部署的字体清单驱动,不能直接读取浏览器或开发机字体。 |
| 字体大小 | 是 | 12px–60px。 |
“查看效果”使用模板当前配置和固定演示底图打开预览。
### 4.3 上架时的默认加水印规则
当用户选择的目标店铺已经绑定水印模板时,点击“上架至 Ozon”后,系统在上传每张商品图片前生成一份带水印的派生图,并把派生图上传给 Ozon;未绑定模板则上传原选图。规则如下:
- 商品级图片与每个 SKU 已选图片都适用,最终以实际要提交给 Ozon 的图片集合为准。
- 原始图片和编辑页已选图片不被改写;水印处理产物是一次独立的、可追溯的上传副本。
- 上传任务固化水印模板版本、位置、缩放/字体和不透明度;模板后续编辑不影响已上架商品。
- 用户在具体上架任务中应能查看“将应用的水印模板”;是否允许该次上架临时取消或更换模板,留待发布流程需求确认。
## 5. 本轮待确认事项
1. 商品限额的 Ozon 数据来源与刷新频率仍待平台接口/真实店铺联调确认;在此之前固定显示 `—`。
2. 账户是否从首期就允许多人共享同一工作空间/协作店铺?如果不做,首期仍按“一个账户一个工作空间”使用,但架构会保留扩展空间。
3. 上架任务是否允许临时取消或替换门店默认水印?
## 6. 非功能性约束
- API Key、Cookie、密码都属于高敏感信息:禁止日志记录、客户端缓存、列表返回和明文回显。
- 所有店铺、水印、素材与后续商品数据必须按账户/工作空间隔离。
- 凭据验证、仓库同步、图片上传和水印渲染可以失败或耗时,页面应展示最后一次状态与可重试入口,不能长时间阻塞表单提交。