返回总览
需求文档基本信息 · 客户管理
产品 云码仓库管理系统
需求文档 › 基本信息 › 客户管理【BM-03】
客户管理【BM-03】基本信息
模块编号BM-03
一级菜单基本信息
二级菜单客户管理
状态设计中
维护人李延涛
版本V1.0
日期2026-10-09
来源约束ERP 接口 + 码上放心对照(只读)
变更说明V1.0 首次发布:定义基于 ERP 接口同步的客户主数据管理,明确 (customer_id, owner_id) 联合主键、客户基本信息在 WMS 内只读(编辑统一在 ERP 完成并经接口重新同步)、以及"批量对照"——勾选客户调用所属货主码上放心接口、写入 码上放心企业名称 / ent_id / ref_ent_id 三字段为后续业务预留身份基础。

客户管理 · 需求文档(BM-03)

客户档案以 ERP 为唯一权威源,WMS 通过接口获取,不在 WMS 内手工编辑;客户资料的增改统一在 ERP 完成,经接口重新同步回 WMS,确保两套系统数据一致。核心能力:提供批量对照——勾选多条客户,调用其所属货主的码上放心接口,自动拉取并写入 码上放心企业名称 / ent_id / ref_ent_id,为后续追溯、核注、关联关系等业务预留企业身份基础。核心约束:customer_id + owner_id 联合主键、基本信息只读、码上放心字段仅由对照写入、不可手改。

一、功能概述

模块定位

客户管理是 WMS 的下游身份认证层(参见数据库文档 pub_customer 表注释),维护仓储作业与追溯业务所需的客户档案,供出库、销售、运输等模块引用。它不做客户主数据的生产方,只做 ERP 主数据的消费方与码上放心身份补充方;与供应商管理(BM-02)形成对称设计——供应商管理回答"货从哪里来",客户管理回答"货送到哪里去"。

要解决的问题

  • 客户资料若在 ERP / WMS 各录各的,极易不一致,直接导致销售出库挂错客户、追溯码绑定错企业、对账偏差。
  • 多货主(3PL)场景下,同一客户可能归属不同货主,缺少 owner 维度会让客户"串户"。
  • WMS 运营人员误改客户基础信息(如名称、银行账号、法人),事后无法判断以谁为准,且违反"单一权威源"原则。
  • 药品追溯要求客户(收货/使用方)具备码上放心企业身份(企业名称、ent_id、ref_ent_id),但 ERP 通常不含这些字段,需要一套可批量补全的机制,逐条手填既慢又易错。

目标(可衡量)

  • 客户主数据 100% 来自 ERP 接口,WMS 零手工编辑基本信息。
  • 通过 (customer_id, owner_id) 联合主键,支撑"同客户多货主"隔离。
  • 批量对照可将客户的码上放心企业身份(名称 / ent_id / ref_ent_id)批量补全,而非逐条手填,为后续核注、关联、追溯业务准备好企业身份基础。
  • 基本信息只读、码上放心字段仅由对照写入,权责清晰、可审计。
  • 同步与对照过程可监控、可回溯(时间、结果、失败明细)。
二、需求说明核心约束 + 数据模型 + 接口 + 功能清单

2.1 核心约束与设计原则

① 数据来源 —— 接口获取 ERP 客户资料。WMS 不生产客户主数据,只消费。ERP 是客户基础信息的权威源,WMS 通过接口(拉取/接收)落地。v1 默认单向同步(ERP → WMS),WMS 不回写客户主数据。

② 联合主键 —— customer_id + owner_id。customer_id 来自 ERP(客户唯一编码,对应 pub_customer.customer_id,备注"ERP客户id");owner_id 由 WMS 侧提供,关联"货主主数据 system_owner.id"。二者共同唯一标识一条客户记录。之所以需要 owner_id:同一客户在不同货主名下是两条独立实体,必须靠 owner 区分。

③ 只读控制 —— 基本信息部分不可编辑。所有来自 ERP 的基本信息字段在 WMS 内锁定/置灰,任何界面与接口都不允许 WMS 侧直接修改。客户的编辑统一在 ERP 系统完成,ERP 改动后通过接口重新同步回 WMS(增量 / 事件触发),WMS 副本自动被覆盖,保证与 ERP 一致。此设计的目的即"为保证数据一致性,WMS 不提供客户资料的编辑"。

④ 码上放心对照 —— 由"批量对照"写入,不可手改。码上放心企业信息(ent_name / ent_id / ref_ent_id)不来自 ERP、也不允许在 WMS 手工录入,只能通过"批量对照"动作调用货主码上放心接口获取后回写。该字段集是 WMS 在客户档案上的唯一自有补充维度,且只能由系统经接口写入。

2.2 数据模型(联合主键 customer_id + owner_id)

客户记录以 (customer_id, owner_id) 为联合主键,对应数据库文档 pub_customer 表(共 30 字段)。字段按"可编辑性"分为四类:

#字段来源 / 可编辑性说明
1customer_idERP · 只读PKERP 客户 ID,联合主键之一,来自 ERP(备注"ERP客户id")
2owner_idWMS · 系统PK货主 ID,由 WMS 提供,关联货主主数据 system_owner.id,联合主键之一
3customer_codeERP · 只读客户编码
4customer_nameERP · 只读客户名称(批量对照的匹配键之一)
5short_nameERP · 只读客户简称
6customer_opcodeERP · 只读助记码
7contact_manERP · 只读联系人
8contact_telERP · 只读联系电话
9legalERP · 只读法人
10bank_nameERP · 只读开户银行
11bank_noERP · 只读开户账号
12regist_addressERP · 只读注册地址
13store_addressERP · 只读仓库地址
14provinceERP · 只读省
15cityERP · 只读市
16areaERP · 只读区
17townERP · 只读村镇
18is_print_noWMS · 待定是否打印贯标码(1 是 0 否);编辑权限见 §五 开放问题(默认遵循"WMS不提供编辑"原则,由 ERP 同步或融合系统管理)
19customer_accountWMS · 待定客户融合系统登录账号;编辑权限见 §五 开放问题
20customer_pwdWMS · 待定客户融合系统登录密码(敏感);编辑权限见 §五 开放问题
21码上放心企业名称 ent_name码上放心 · 对照写入批量对照调用货主码上放心接口获取;不可手改
22码上放心企业 ent_id码上放心 · 对照写入码上放心企业标识,对照写入;不可手改
23码上放心企业 ref_ent_id码上放心 · 对照写入码上放心企业引用标识,对照写入;不可手改
—系统公共字段(status / creator / create_time / updater / update_time / deleted / tenant_id)WMS · 系统全库统一收尾 7 个字段;tenant_id 用于多租户隔离,status 控制有效/无效

一句话区分:ERP · 只读 是"客户是谁",来自 ERP,WMS 不能改;WMS · 系统 是 WMS 维护的主键/状态/租户等系统字段;码上放心 · 对照写入 是经"批量对照"由货主码上放心接口拉取、绝不可手改的追溯身份字段。WMS · 待定 为 pub_customer 中三项 WMS 侧字段(打印标志 / 融合系统账号密码),其编辑权限需按 §五 评审确认,默认不违反"WMS不提供客户编辑"原则。

2.3 ERP 接口设计(ERP → WMS 单向同步)

同步方向:ERP → WMS(v1 单向)。WMS 通过接口拉取或接收客户主数据,不回写。

同步触发:支持全量同步 + 增量同步;建议"定时批量 + 变更事件触发"双通道。当 ERP 在源头完成客户编辑后,应通过增量/事件方式重新同步到 WMS,使 WMS 副本自动覆盖更新,从而达成"WMS 不提供编辑、编辑在 ERP、再同步回 WMS"的数据一致性闭环。

主键与映射:customer_id 直接取自 ERP 报文;owner_id 不直接来自 ERP,需通过「货主 ↔ ERP 来源映射」绑定——每个货主配置其对应的 ERP 组织 / 客户来源编码,同步时据此把客户归属到正确的 owner_id。

幂等与落库:以 (customer_id, owner_id) 做 upsert;同一客户重复同步不新增记录,只更新字段值。

字段处理规则:ERP 字段覆盖 WMS 同名只读字段(含客户基本信息、银行账号、地址等);码上放心三字段(ent_name / ent_id / ref_ent_id)不被 ERP 同步覆盖,其唯一写入通道是"批量对照",避免对照结果被 ERP 报文抹掉;is_print_no / customer_account / customer_pwd 按 §五 确认的权限处理,不在本接口默认覆盖争议范围内。

失败与容错:单条记录失败不阻断整体批次,记录失败明细(customer_id、owner_id、错误原因),支持失败重试;批次级返回成功/失败计数与耗时。

2.4 批量对照接口设计(码上放心)

功能定位:"批量对照"是客户管理区别于其他主数据的核心能力。其目的是把 WMS 中的客户与码上放心平台上的企业身份对应起来,补全 ent_name / ent_id / ref_ent_id,为后续核注、关联关系、追溯等业务提供企业身份基础(客户即"货送到哪里去"的追溯主体)。

接口归属:调用的是货主(owner)的码上放心接口,而非 WMS 自有接口。每个货主在 WMS 中需预先配置其码上放心接入凭证(app_key / secret 或 token)与接口地址;WMS 作为调用方,按客户所属 owner 路由到对应货主的码上放心凭据。

操作流程(批量):

  • 在客户列表勾选多条客户记录(建议先按货主筛选,避免跨货主混批);点击「批量对照」。
  • 系统按所选客户的 owner_id 取出对应货主的码上放心接口配置;若勾选跨多个货主,按 owner 分组分别调用。
  • 以 ERP 客户的客户名称 / 统一社会信用代码(若 ERP 提供)作为码上放心企业查询的匹配入参。
  • 调用货主侧码上放心「企业信息查询」接口,获取该企业身份。
  • 将返回结果写入客户记录:码上放心企业名称(ent_name)、码上放心企业 ent_id、码上放心企业 ref_ent_id。

结果处理与写入规则:

  • 对照预览:调用前/后展示匹配结果——已匹配、未匹配、调用失败三类,供人工确认。
  • 确认写入:预览无误后批量落库;写入属于"对照写入",前端不提供这三个字段的手动编辑入口。
  • 幂等:以 (customer_id, owner_id) 定位,重复对照覆盖原值,不产生重复记录。
  • 可重做 / 可清除:支持对单条或批量重新对照;支持清除已对照的码上放心字段(置空),用于纠错。
  • 失败隔离:单条对照失败不阻断整批,记录失败明细(customer_id、owner_id、失败原因),支持失败重试。

入参 / 出参(货主码上放心接口):

#项方向字段 / 说明
1货主码上放心凭证WMS → 码上放心按 owner_id 路由的 app_key / secret / token 与接口地址(由货主管理配置)
2匹配入参WMS → 码上放心客户名称 / 统一社会信用代码(来自 ERP 字段)
3码上放心企业名称码上放心 → WMS映射写入 ent_name
4码上放心企业 ent_id码上放心 → WMS映射写入 ent_id
5码上放心企业 ref_ent_id码上放心 → WMS映射写入 ref_ent_id

2.5 功能清单与详细需求

#功能项优先级需求说明与验收要点
1ERP 接口接入与同步P0WMS 通过接口从 ERP 获取客户主数据;支持全量/增量;以 (customer_id, owner_id) upsert;ERP 编辑后经接口重新同步回 WMS。
验收:给定 ERP 报文可正确落库;重复同步不产生重复记录;单条失败不阻断整体并记日志。
2货主(owner)绑定与映射P0owner_id 由 WMS 提供;维护「货主 ↔ ERP 来源映射」,同步时按映射归属 owner_id;同时为后续批量对照维护「货主 ↔ 码上放心接口凭证」配置。
验收:同一客户按不同 owner 生成独立记录;映射缺失时报错并跳过,不误归属。
3客户主数据查看P0列表(分页)+ 详情;支持按 owner、客户编码/名称、状态、是否已对照码上放心搜索筛选;只读字段清晰标识来源 ERP,码上放心字段标识"对照写入"。
验收:可按上述条件检索;详情页区分只读/系统/对照字段。
4基本信息只读控制P0ERP 来源字段在界面置灰/锁定,无编辑入口;WMS 不提供客户资料的编辑 UI 与写接口;接口层同样禁止 WMS 直接改这些字段;ERP 的改动统一经接口重新同步覆盖。
验收:前端无编辑控件;后端对只读字段的写请求拒绝并记录;ERP 改动同步后 WMS 副本被覆盖更新。
5批量对照(码上放心)P0勾选多条客户 → 点击「批量对照」→ 按 owner_id 路由到对应货主码上放心接口 → 以客户名称/信用代码为匹配键查询 → 回写 ent_name / ent_id / ref_ent_id;支持对照预览、确认写入、按 owner 分组调用、失败隔离。
验收:勾选 N 条可批量补全码上放心三字段;跨货主自动分组调用;单条失败不影响整批并记明细;未匹配/失败可定位到具体 (customer_id, owner_id)。
6同步监控与日志P1展示最近 ERP 同步时间、成功/失败数、失败明细;支持手动触发全量同步与失败重试。
验收:可查看批次结果;失败记录可定位到具体 (customer_id, owner) 与原因。
7码上放心对照结果管理P1查看每条客户的码上放心对照状态(已对照/未对照/失败);支持单条或批量重新对照、清除已对照字段(纠错);码上放心三字段在任何界面均不可手改,只能通过对照写入。
验收:对照状态可筛选;重对照覆盖原值;清除可置空;手动编辑入口不存在。

Future(P2,本期不做但架构预留):码上放心字段与追溯码/批次的关联视图;字段级变更对比与审计日志;客户与商品、供应商的统一主数据视图;客户导出。

2.6 用户故事

  • 作为基本信息维护员,我希望通过接口把 ERP 客户主数据同步进 WMS,以便不用手工逐条录入,且保证与 ERP 一致。
  • 作为基本信息维护员,我希望客户资料在 WMS 里是只读锁定的,所有编辑都在 ERP 完成再同步回来,以便任何人都改不了、不会有"两套真相"。
  • 作为基本信息维护员,我希望勾选一批客户后一键「批量对照」,自动调用对应货主的码上放心接口补全企业名称 / ent_id / ref_ent_id,以便为后续追溯业务准备好企业身份,而不用逐条手填。
  • 作为基本信息维护员,当某条客户对照失败时我希望看到是哪家、为什么,以便及时处理而非整批重来。
  • 作为仓储/销售/运输运营人员,我希望按货主/名称/是否已对照码上放心快速查到某个客户及其身份,以便作业与核对。

2.7 非目标(Non-goals)

  • 不在 WMS 新建/编辑客户基础信息——ERP 是唯一权威源,WMS 只消费,编辑统一在 ERP 完成后经接口重新同步。
  • 不回写客户主数据到 ERP(v1 单向;双向同步列入 P2)。
  • 不手工录入码上放心字段——ent_name / ent_id / ref_ent_id 只能由"批量对照"经货主码上放心接口写入,WMS 不提供手动编辑入口。
  • 不做定价 / 信用额度 / 账期逻辑——属 ERP 域,WMS 仅取作业与追溯所需字段。
  • 不替代货主管理、追溯码/批次管理——owner_id 与码上放心凭证来自货主主数据;追溯/批次为独立模块。

2.8 主要风险

  • ERP 接口不稳定 / 字段缺失 → 同步失败,影响出库与追溯;缓解:失败隔离 + 重试 + 告警。
  • owner_id 映射错误 → 客户归属错乱、串户;缓解:映射缺失即跳过并告警,不允许模糊归属。
  • 只读字段被绕过修改 → 与 ERP 不一致;缓解:前端置灰 + 后端写拦截 + 同步覆盖兜底。
  • 货主码上放心凭证缺失 / 失效 → 批量对照无法调用;缓解:凭证缺失时该 owner 的对照请求直接失败并提示配置;码上放心三字段不被 ERP 同步覆盖以免丢失。
  • 对照匹配不准 → 客户名称与码上放心企业名不完全一致导致匹配失败或错配;缓解:支持信用代码作为更强匹配键,未匹配单独列出人工确认,不搞模糊自动落库。
  • is_print_no / customer_account / customer_pwd 编辑权限未确认 → 若误放进 WMS 编辑,可能违反"WMS不提供客户编辑"原则或与 ERP 冲突;缓解:§五 评审先定权限,默认按只读/ERP 同步处理。
  • 大数据量全量同步性能 → 分页/分批、增量优先。
三、与其他模块的关联上游依赖 + 下游消费

上游:货主管理(system_owner)

  • owner_id 由 WMS 侧提供,来源于货主主数据;本模块依赖货主管理维护货主档案、「货主 ↔ ERP 来源映射」以及「货主 ↔ 码上放心接口凭证」配置。
  • 货主管理未就绪时,客户同步无法正确归属 owner_id,本模块应安全跳过并告警(不误归属);码上放心凭证缺失时批量对照应明确失败并提示配置。

下游:出库管理 / 销售中心

  • 销售订单、发货、门店请货、退货均以客户为对象,引用本模块的客户身份;客户变更经 ERP 接口回流到本模块。
  • 客户「状态(status)」直接控制该 (customer, owner) 是否可参与销售与出库作业。

下游:追溯码中台

  • 码上放心企业身份(ent_name / ent_id / ref_ent_id)是核注、关联关系、追溯合规展示的底层身份数据,由本模块经批量对照补全后供追溯码中台引用(客户即"货送到哪里去"的追溯主体)。
  • 基本信息(客户名称、法人、注册地址)是追溯合规展示的补充数据。

下游:TMS 运输

  • 出库单据、运输对象间接引用本模块的客户身份与地址字段做收货与温控。

关联:供应商管理、商品管理

  • 三者同属基本信息,均采用"ERP 接口同步 + 联合主键 + 只读控制"的主数据治理模式;客户管理与供应商管理互为上下游交易主体(供应商回答"货从哪里来",客户回答"货送到哪里去")。
四、非功能性要求
  • 性能:全量同步须分页/分批处理,单批失败不影响整体;客户列表查询需支持分页与索引(按 owner_id、customer_id、customer_code、customer_name),万级数据下响应可控;批量对照按货主分组并发调用,控制码上放心接口频限。
  • 数据一致性:同步完成后 WMS 只读副本须与 ERP 主源一致;覆盖策略明确(ERP→只读字段覆盖,码上放心三字段不被 ERP 覆盖,只能由对照写入)。
  • 安全性与权限:客户基本信息前后端双重锁定(前端置灰 + 后端写拦截);码上放心三字段仅允许"批量对照"通道写入,禁止手动写接口;多租户隔离——所有查询与写操作须按 owner_id / tenant_id 维度隔离,跨货主不可见彼此客户;customer_pwd 等敏感字段须加密存储与脱敏展示。
  • 可用性与容错:ERP 接口异常或货主码上放心凭证失效时,同步/对照可失败隔离、记录明细、支持手动重试,且查询功能不依赖实时成功;接口调用需超时与降级处理。
  • 可维护性与扩展性:字段映射表可配置,便于 ERP 字段增减;接口协议(REST / 消息队列)可替换;货主码上放心凭证按 owner 配置,便于新增货主接入。
  • 审计与监控:ERP 同步批次、码上放心对照批次、失败明细、字段变更可追溯(P2 补审计日志);同步/对照成功率与及时率可观测。
  • 兼容性:兼容增量与全量两种同步模式;字段增减向后兼容,不因新增可选字段导致旧报文失败。
五、PRD 评审要点研发 / 架构 / 业务 共同确认

评审核对清单

  • 联合主键 (customer_id, owner_id) 是否覆盖"同客户多货主"真实场景,是否存在单 owner 即可的简化可能?
  • owner_id 与 ERP 的映射基准是否明确(按货主 / 按 ERP 组织)?映射缺失时是否安全跳过而非模糊归属?
  • 只读字段是否前后端双重锁定,且 ERP 重新同步覆盖作为兜底保障一致性?
  • 同步是否幂等(重复同步不重复记录),upsert 逻辑是否正确?
  • 码上放心三字段(ent_name / ent_id / ref_ent_id)是否被明确排除在 ERP 同步覆盖之外,且 WMS 无手动编辑入口?
  • 批量对照的货主码上放心接口凭证由谁配置、存于何处(货主管理),跨货主分组调用与失败隔离是否到位?
  • 对照匹配键是否明确(客户名称 / 统一社会信用代码),未匹配是否单独列出人工确认而非模糊落库?
  • 与货主管理、出库/销售、追溯码中台的关联口径是否对齐?与供应商管理(BM-02)是否保持对称设计?
  • 非目标边界是否清晰(不回写 ERP、不手改码上放心字段、WMS 不编辑客户资料),避免范围蔓延?
  • 多租户隔离(owner_id / tenant_id)是否满足安全与合规要求?

需用户 / 架构确认的开放问题

  • 接口协议与同步频率:REST 拉取 / 消息推送?全量周期与增量触发方式?ERP 编辑后重新同步的触发机制?
  • 同客户跨多 owner 是否真实存在,决定联合主键是否必要(还是 owner_id 可省)?
  • 货主码上放心接口的具体协议、凭证类型(app_key/secret 或 token)、频限与鉴权方式?
  • 批量对照的匹配键优先级:信用代码优先还是名称优先?名称不一致时如何处理(仅人工确认,还是允许模糊匹配)?
  • 码上放心接口返回字段是否仅取 ent_name / ent_id / ref_ent_id 三项,还是本期一并保留更多字段备用?
  • pub_customer 中三项 WMS 侧字段(is_print_no 是否打印贯标码、customer_account 客户融合系统登录账号、customer_pwd 客户融合系统登录密码)的编辑权限:按"WMS不提供客户编辑"原则,默认应视为由 ERP 同步或融合系统管理、WMS 只读;但若 is_print_no 等确需 WMS 运营配置,需明确其编辑入口与权限边界,避免与只读原则冲突。
云码仓库管理系统 · 需求文档 · 客户管理【BM-03】