feat: 初始化项目,项目需求、方案文档
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
# 商品与 SKU 数据模型
|
||||
|
||||
> 目标数据库:PostgreSQL。单位统一存储为毫米(`mm`)和克(`g`)。所有租户数据必须拥有或可追溯至 `workspace_id`。
|
||||
|
||||
## 1. 云端租户层
|
||||
|
||||
```text
|
||||
users ── workspace_memberships ── workspaces
|
||||
└─ stores ── platform_connections
|
||||
```
|
||||
|
||||
`stores` 保存平台标识、市场/国家、默认 locale、默认币种和连接状态。敏感凭据经加密后保存在专用连接密钥记录中,绝不放进前端、日志或商品 JSON。
|
||||
|
||||
## 2. 商品领域
|
||||
|
||||
```text
|
||||
stores 1 ── N products (SPU) 1 ── N product_variants (SKU)
|
||||
├── product_attributes
|
||||
├── product_assets ── variant_media
|
||||
└── pricing_defaults ── variant_pricing_snapshots
|
||||
```
|
||||
|
||||
每个父商品至少有一条 SKU。`products` 保存通用标题、简介、型号、条形码、采买地址、货源备注、目标市场/类目引用、富内容、默认规格及默认计价参数。可翻译内容不能只存一列,应以 `product_translations`(语言/市场、字段、值、来源、状态)或等价模型保存。
|
||||
|
||||
`product_variants` 保存:稳定来源键、展示名、启用/排序、SKU 货号、采购价、售价、划线价、币种、SKU 规格、包装物流规格、实物规格、发布映射和时间戳。`offer_id` 对同一门店/平台连接必须唯一。
|
||||
|
||||
## 3. 双规格和继承
|
||||
|
||||
父商品可提供默认的实物/包装规格;SKU 可以逐字段覆盖:
|
||||
|
||||
- 实物:`physical_length_mm`、`physical_width_mm`、`physical_height_mm`、`net_weight_g`;用于规格展示、文案和尺寸图。
|
||||
- 包装物流:`package_length_mm`、`package_width_mm`、`package_height_mm`、`shipping_weight_g`;用于定价、物流校验和平台发布。
|
||||
|
||||
值按“SKU 覆盖 → 父商品默认”合并;两组规格独立合并。`null` 表示该字段继承,不是零,也不是 SKU 不存在。每组须有来源、原始文本、状态(`confirmed`/`ambiguous`/`missing`)和确认时间;口径未知的数据不能落入任一规格组。
|
||||
|
||||
## 4. 动态属性和媒体
|
||||
|
||||
`product_attributes` 使用结构化行保存 `scope`(common/variant)、本地 key、平台属性 ID、复杂属性 ID、JSON 值、语言、来源与确认状态。平台 schema 驱动类型、必填、字典、多值和 `is_aspect`;`is_aspect=true` 默认 variant scope,但允许业务覆盖。
|
||||
|
||||
`product_assets` 保存资产事实和对象存储 URL;`variant_media` 保存 SKU 对资产的图片/视频/封面选择与顺序。资产归属一律用稳定 ID;采集平台无法稳定给 SKU 归属时,只作为商品级候选池。
|
||||
|
||||
## 5. 定价、任务和发布
|
||||
|
||||
`variant_pricing_snapshots` 保存确认时的输入、合并后的包装规格、公式版本、汇率、结果、告警和时间;导出/发布时服务端重新校验,不能信任浏览器结果。所有 AI、媒体、导出和发布任务保存 `workspace_id`、`product_id` 与可空/必填的 `variant_id`,可重试、可恢复并隔离租户。
|
||||
Reference in New Issue
Block a user