用途:面向 Spree 6 商品目录的开发技能,覆盖产品(列表项)、变体(实际购买单元,含 SKU、价格、库存)、选项类型/值、分类与集合、自定义字段、媒体以及搜索提供方。从 Spree 5.x 升级可参考 spree-upgrade-5-to-6 技能。
主要能力:产品有 draft/active/archived 状态,仅 active 在前台可见,并支持 available_on/discontinue_on 销售窗口;每个产品归属单一 store,且必有至少一个真实变体,无隐藏 master,default_variant 为持久化外键。变体承载 SKU、条码、重量、按币种价格与按库位库存。选项类型 kind 支持 dropdown、color_swatch、buttons,显示字段为 label。产品类型(模板)在创建时盖章选项类型、分类、配送档案,自定义字段定义按引用生效。分类为嵌套树,集合为扁平且可手动或按规则自动。自定义字段为类型化商家数据,可控制前台可见与可搜索/排序。媒体支持图片、视频、外部视频,含主媒体与焦点裁剪。搜索默认 Database 提供方,也可用 Meilisearch 或自定义。
使用方式:写入以 Admin API 为准,如 admin.products.create({...}),单变体产品价格直接写在产品上,多变体发送 variants 并按 name/value 匹配选项;不要同时发送顶层 prices 和 variants。命令行可用 spree api post /products 等。Ruby 中需先设 Spree::Current.store,可用 Spree::Product.create! 与 default_variant.set_price。搜索重建用 spree rake spree:search:reindex。
适用场景:商品建模、变体与选项管理、分类导航与集合营销、自定义字段、媒体库、渠道可见性排查、搜索索引与数字资产、CSV 导入导出。
限制:Admin API 不会自动发布到渠道,需显式写 product_publications;无当前币种价格的产品会被隐藏;分类/集合 id 仅接受本店;选项类型为店铺所有;自定义字段定义 required 仅为建议;Admin API 仅按带前缀 ID 解析,Store API 接受 slug 或 ID;旧 slug 会 404。价格按币种,不存在 variant.price。具体收费、平台与效果资料未提供。