furniture-3d-system-Wu/furniture-3d-system/docs/架构设计/供应链产品全量档案字段来源对照表.md
WuYongJie 2816a0b23d fix(supply-chain): 产品全量档案 DF 条码成本价改为统一取 jst_sku.cost_price
- enrichment 价格补丁不再区分 DF/非 DF:purchasePrice 与 costPrice 均取 rpt.jst_sku(purchase_price / cost_price)
- 删除 dws_sn_sales_full_info_di.goods_cost 取价链路(dws-sales-goods-cost.repository.ts 整删,DWS_SALES_GOODS_COST 来源常量移除)
- 单测与《供应链产品全量档案字段来源对照表》同步更新

预期效果(部署后下一轮同步):约 1874 条 DF 成本价由空变有值、约 230 条由 dws 金额口径变为 jst 单价口径、约 4516 条数值不变、0 条丢值。
2026-10-16 16:26:43 +08:00

11 KiB
Raw Blame History

供应链产品全量档案字段来源对照表

更新时间:2026-10-16

1. 合并与追踪规则

  • 汇总表:SupplyChainProductArchive
  • 唯一合并键:barcode
  • 来源记录:SupplyChainProductArchiveSource
  • 字段级来源:SupplyChainProductArchive.fieldSourceMap
  • 产品全量档案页面使用的来源数据必须先写入 SupplyChainProductArchive 或图片缓存;页面列表不再临时联查来源库。
  • 新品图片先用 external.product_catalog_wide_v1.archive_image 判断当前 SKU/条码行是否真的有图;确认有图后,保存同一行标准化的绝对 image_url,绝对地址为空时才保留 archive_image。当 archive_image 为空时禁止读取 image_url,因为该列此时可能回退到产品级图片。宽表当前行无图时,再按当前条码/SKU精确查询素材库;命中的链接和来源信息保存在 SupplyChainProductArchiveImageCache。图片二进制不写入 PostgreSQL,图片变化不进入商品修改日志。
  • 首次建立商品档案只记录一条“商品档案导入”;后续来源值实际变化时,按条码、字段、旧值、新值和来源写入 OperationLog。
  • 扩展字段通过 sync:supply-chain-product-archive-enrichment 分批同步;重复执行时只有值发生变化的字段才更新主表并写日志。
  • 生产定时入口为 scripts/install-supply-chain-product-archive-sync-timer.sh,默认每 15 分钟先同步 rpt.jst_sku 基础档案,再同步供应商、仓库、生产周期、日销和价格等扩展字段。
  • 聚水潭来源只读取 JSReportReplica.rpt.jst_sku 中 item_type = '成品' 的行。
  • jst_sku 只更新本表明确列出的字段;空值不覆盖其他来源的已有值。
  • 已由 JST_SKU 提供且有值的字段,不再被产品开发同步覆盖。
  • 一级类目由 SupplyChainProductArchiveCategoryConfig 按 JST 二级类目匹配,未配置时保持空值。
  • 创建时间优先级固定为:云杉商品资料.xlsx 的“创建时间” > jst_sku.created > 产品开发创建时间。
  • 云杉文件只在部署或补数时通过导入脚本读取一次,不进入 Git,页面运行时不读取 Excel。
  • 体积统一由同一来源记录的长、宽、高相乘计算;任一尺寸缺失、不是有效数字或不大于 0 时保持空值。
  • 未列出的字段不猜测、不兜底,保持原来源或空值。

2. 当前字段对照

全量档案字段 页面表头 JST_SKU 来源 产品开发来源 其他来源 转换规则
barcode 条码 rpt.jst_sku.sku_id external.product_catalog_wide_v1.barcode_business_key 去空格并转大写;档案唯一键
spu SPU rpt.jst_sku.i_id archive_spu 去空格并转大写
sku SKU rpt.jst_sku.other_7 archive_sku 去空格并转大写;JST 空值不兜底
image 图片 external.product_catalog_wide_v1.archive_image + image_url 素材库接口 + SupplyChainProductArchiveImageCache.previewUrl 新品以当前 SKU/条码行 archive_image 非空为前提,保存同一行标准化 image_url;archive_image 为空时不得使用可能回退到产品级图片的 image_url;当前行无图时再按当前条码/SKU精确查询素材库,命中链接长期复用,未命中则留空
businessCreatedAt 创建时间 rpt.jst_sku.created product_development_created_at,空时取 source_created_at 云杉文件“创建时间”按条码匹配 按固定优先级覆盖
categoryL1 一级类目 sales_category_name SupplyChainProductArchiveCategoryConfig.categoryL1 JST 行按完整二级类目匹配配置表
categoryL2 二级类目 rpt.jst_sku.category archive_product_category_name JST 原样保留完整类目文本
productName 商品名称 rpt.jst_sku.name archive_product_name 原样保留
designer 设计师 暂不接入 archive_designer
productStatus 商品状态 rpt.jst_sku.other_5 sku_sales_status 只接受“销售、停产、退市”
material 材质 rpt.jst_sku.other_10 archive_material 原样保留
color 颜色 rpt.jst_sku.properties_value archive_color 原样保留
weight 重量 rpt.jst_sku.weight sample_weight_kg 转十进制数;空值不覆盖
length 长 rpt.jst_sku.l package_length_cm 转十进制数;空值不覆盖
width 宽 rpt.jst_sku.w package_width_cm 转十进制数;空值不覆盖
height 高 rpt.jst_sku.h package_height_cm 转十进制数;空值不覆盖
volume 体积 rpt.jst_sku.l * w * h package_length_cm * package_width_cm * package_height_cm 不读取来源体积列,统一按长宽高计算
packType 单双包 rpt.jst_sku.other_8 package_set_count 1-9 转为非双包至九包;已是标准文字时原样保留
productTag 商品标签 rpt.jst_sku.labels product_tag 原样保留
installDocId 安装图纸/视频 ID rpt.jst_sku.other_9 drawing_id 原样保留
spec 产品尺寸 从 rpt.jst_sku.name 提取 archive_spec 提取三轴尺寸,统一 / 分隔,保留小数和范围
brand 品牌 rpt.jst_sku.brand brand_name 原样保留
orderType 叫货类型 rpt.jst_sku.other_price_2 purchase_order_method 按现有枚举归一
storageType 入库/代发 SupplyChainProductArchiveWarehouseConfig.storageType 按出入库仓库名称匹配配置表
isSeasonal 是否季节性产品 暂无来源 暂无来源 保持空值
replaceCount 替换款数量 暂无来源 暂无来源 保持空值
region 区域 rpt.js_supplier.region 按供应商名称匹配后写主表
supplierName 供应商 rpt.jst_sku.supplier_name archive_supplier_name 原样保留
supplierType 供应商类型 rpt.js_supplier.scmtype 按供应商名称匹配后写主表
supplierStatus 供应商状态 rpt.js_supplier.coopersgn 1=合作、2=不合作
purchaseOwner 采购 archive_purchase_owner rpt.js_supplier.buyer 供应商采购非空时覆盖产品开发采购
settlementMethod 结算方式 rpt.js_supplier.paycyclesgn 按供应商名称匹配
boardProvider 板材提供方 rpt.js_supplier.undefined2 按供应商名称匹配
penaltyStatus 违约金赔付状态 rpt.js_supplier.undefined1 按供应商名称匹配
warehouseType 仓库属性 rpt.jst_warehouseInfo.remark2 按出入库仓库名称匹配
warehouseHead 仓库负责人 SupplyChainProductArchiveWarehouseConfig.warehouseHead 按出入库仓库名称匹配配置表
minimumOrderQuantity 产品起订量 archive_minimum_order_quantity rpt.pm_stockMonitor.minimum stock monitor 非空时覆盖产品开发起订量
firstLeadTime 首单生产周期 rpt.pm_stockMonitor.produceCycle 条码优先、SKU 唯一匹配兜底
palletSpec 托盘参数 rpt.pm_stockMonitor.trayParameter 条码优先、SKU 唯一匹配兜底
dailySales 采购日销 rpt.pm_stockMonitor.purchaseSale 按条码匹配最新记录
sales3d 3日日销 rpt.pm_stockMonitor.threeAvgSale 按条码匹配最新记录
sales7d 7日日销 rpt.pm_stockMonitor.sevenAvgSale 按条码匹配最新记录
sales15d 15日日销 rpt.pm_stockMonitor.fifteenAvgSale 按条码匹配最新记录
purchasePrice 采购价 rpt.jst_sku.purchase_price 按档案条码精确匹配 jst_sku.sku_id;匹配不到时留空
costPrice 成本价(聚水潭) rpt.jst_sku.cost_price 按档案条码精确匹配 jst_sku.sku_id;匹配不到时留空。DF 条码自 2026-10-16 起同样取本来源(原 rpt.dws_sn_sales_full_info_di.goods_cost 为金额口径,已停用)
costPriceSecondary 成本价(新品) external.product_catalog_wide_v1.cost_price 按档案条码精确匹配 barcode_business_key,只读取 catalog_source = INTAKE_READY 的新品行;匹配不到或来源为空时留空

3. JST_SKU 第一批字段覆盖率

统计范围:item_type = '成品',共 65,164 行。

来源字段 对应档案字段 非空行数
sku_id 条码 65,164
i_id SPU 65,164
name 商品名称、规格解析 65,164
other_7 SKU 63,537
other_5 商品状态 63,771
other_9 安装图纸/视频 ID 24,792
other_10 材质 31,394
properties_value 颜色 63,855
category 二级类目 63,539
weight 重量 35,754
l 长 38,224
w 宽 38,083
h 高 38,124
other_8 单双包 61,908
labels 商品标签 以本次来源库实时数据为准
brand 品牌 以本次来源库实时数据为准
supplier_name 供应商 以本次来源库实时数据为准

4. 来源代码

来源代码 来源系统 Schema 对象
JST_SKU 聚水潭 JSReportReplica rpt jst_sku
PRODUCT_DEVELOPMENT 家具产品开发系统 external product_catalog_wide_v1
CATEGORY_CONFIG 供应链中心类目配置 public SupplyChainProductArchiveCategoryConfig
JST_SUPPLIER 聚水潭 JSReportReplica rpt js_supplier
JST_STOCK_MONITOR 聚水潭 JSReportReplica rpt pm_stockMonitor
JST_WAREHOUSE_INFO 聚水潭 JSReportReplica rpt jst_warehouseInfo
JST_SKU_PRICE 聚水潭 JSReportReplica rpt jst_sku
PRODUCT_CATALOG_COST_PRICE 家具产品开发系统 external product_catalog_wide_v1
WAREHOUSE_CONFIG 供应链中心 public SupplyChainProductArchiveWarehouseConfig
YUNSHAN_PRODUCT_EXPORT 云杉商品资料 Excel 工作表名 Excel 文件名

5. 生产同步入口

  • 产品开发页面保存成功后,会按当前产品即时同步 external.product_catalog_wide_v1 的档案字段。
  • 聚水潭及其关联表由 systemd timer 周期检查。同步过程可以重复执行,主表只写实际变化,商品修改日志只记录后续真实变化。
  • 定时任务安装前必须在生产服务器的 shared/supply-chain-product-archive-sync.env 填写目标 PostgreSQL 和来源 SQL Server 的身份校验值;文件权限固定为 600,其中不保存数据库密码。
  • 安装命令只在发布完成并获得生产操作授权后执行:bash scripts/install-supply-chain-product-archive-sync-timer.sh。
  • 新品即时同步以宽表当前 SKU/条码行的 archive_image 是否存在为准,并把同一行标准化的绝对 image_url 写入档案和 SupplyChainProductArchiveImageCache。宽表当前行无图时,页面才按当前条码/SKU调用素材库接口并回写链接;存量图片规则不在本次新品图片调整范围内。