-- 商品入库 + 库存流水（共享）
-- 依据：doc/店铺后台/库存管理/商品入库/商品入库技术方案.md v1.0

-- 入库单主表
CREATE TABLE IF NOT EXISTS `biz_stock_inbound` (
  `inbound_id`     bigint(20)   NOT NULL AUTO_INCREMENT COMMENT '入库单ID',
  `inbound_no`     varchar(32)  NOT NULL COMMENT '入库单号（IN+yyyyMMdd+6位）',
  `shop_id`        bigint(20)   NOT NULL COMMENT '店铺ID',
  `inbound_type`   char(1)      NOT NULL COMMENT '0新增商品规格 1采购 2退货 3其他',
  `remark`         varchar(200)          DEFAULT NULL COMMENT '备注',
  `operator_id`    bigint(20)   NOT NULL COMMENT '经办人用户ID',
  `operator_name`  varchar(64)  NOT NULL DEFAULT '' COMMENT '经办人登录名快照',
  `inbound_time`   datetime     NOT NULL COMMENT '入库确认时间',
  `create_by`      varchar(64)           DEFAULT '' COMMENT '创建者',
  `create_time`    datetime              DEFAULT NULL COMMENT '创建时间',
  PRIMARY KEY (`inbound_id`),
  UNIQUE KEY `uk_inbound_no` (`inbound_no`),
  KEY `idx_shop_time` (`shop_id`, `inbound_time`),
  KEY `idx_shop_type` (`shop_id`, `inbound_type`, `inbound_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='商品入库单';

-- 入库单明细
CREATE TABLE IF NOT EXISTS `biz_stock_inbound_item` (
  `item_id`      bigint(20)   NOT NULL AUTO_INCREMENT COMMENT '明细ID',
  `inbound_id`   bigint(20)   NOT NULL COMMENT '入库单ID',
  `goods_id`     bigint(20)   NOT NULL COMMENT '商品ID',
  `sku_id`       bigint(20)            DEFAULT NULL COMMENT 'SKU ID（多规格预留）',
  `goods_name`   varchar(200) NOT NULL COMMENT '商品名称快照',
  `main_pic`     varchar(512) NOT NULL DEFAULT '' COMMENT '主图快照',
  `spec_text`    varchar(256)          DEFAULT NULL COMMENT '规格展示文案',
  `quantity`     int(11)      NOT NULL COMMENT '入库数量',
  `stock_before` int(11)      NOT NULL COMMENT '变化前库存',
  `stock_after`  int(11)      NOT NULL COMMENT '变化后库存',
  PRIMARY KEY (`item_id`),
  KEY `idx_inbound_id` (`inbound_id`),
  KEY `idx_goods_id` (`goods_id`, `inbound_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='商品入库单明细';

-- 库存流水（入库/出库/调整/订单共用）
CREATE TABLE IF NOT EXISTS `biz_stock_log` (
  `log_id`         bigint(20)   NOT NULL AUTO_INCREMENT COMMENT '流水ID',
  `shop_id`        bigint(20)   NOT NULL COMMENT '店铺ID',
  `goods_id`       bigint(20)   NOT NULL COMMENT '商品ID',
  `sku_id`         bigint(20)            DEFAULT NULL COMMENT 'SKU ID（预留）',
  `goods_name`     varchar(200) NOT NULL COMMENT '商品名称快照',
  `spec_text`      varchar(256)          DEFAULT NULL COMMENT '规格展示文案',
  `direction`      char(1)      NOT NULL COMMENT '1入库 2出库',
  `change_reason`  varchar(32)  NOT NULL COMMENT '变化原因编码',
  `change_qty`     int(11)      NOT NULL COMMENT '变化量（正数）',
  `stock_before`   int(11)      NOT NULL COMMENT '变化前库存',
  `stock_after`    int(11)      NOT NULL COMMENT '变化后库存',
  `ref_type`       varchar(16)  NOT NULL COMMENT 'INBOUND/OUTBOUND/ADJUST/ORDER/GOODS',
  `ref_id`         bigint(20)            DEFAULT NULL COMMENT '关联业务主键',
  `ref_no`         varchar(32)           DEFAULT NULL COMMENT '关联业务单号',
  `operator_id`    bigint(20)            DEFAULT NULL COMMENT '操作人ID',
  `operator_name`  varchar(64)           DEFAULT '' COMMENT '操作人登录名',
  `create_time`    datetime     NOT NULL COMMENT '操作时间',
  PRIMARY KEY (`log_id`),
  KEY `idx_shop_time` (`shop_id`, `create_time`),
  KEY `idx_goods_time` (`shop_id`, `goods_id`, `create_time`),
  KEY `idx_ref` (`ref_type`, `ref_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='库存流水';
