-- ==========================================================
-- 库房重构 Phase 0：建审计日志表 + 修正历史状态
-- 全部为新增/数据修正，零影响现有功能
-- ==========================================================

-- ----------------------------------------------------------
-- 1. 旧 log 表留底（结构残缺，只有 20 行）
-- ----------------------------------------------------------
RENAME TABLE `sys_oa_warehouse_log` TO `_deprecated_sys_oa_warehouse_log`;

-- ----------------------------------------------------------
-- 2. 统一审计日志表
-- ----------------------------------------------------------
DROP TABLE IF EXISTS `sys_oa_warehouse_audit_log`;
CREATE TABLE `sys_oa_warehouse_audit_log` (
  `log_id`       bigint        NOT NULL AUTO_INCREMENT                COMMENT '日志ID',
  `op_type`      varchar(32)   NOT NULL                               COMMENT '操作类型：REQ_CREATE/REQ_DONE/REQ_CANCEL/TASK_CREATE/TASK_DONE/IN/OUT/RETURN/STOCK_ADJUST 等',
  `ref_type`     varchar(32)   DEFAULT NULL                           COMMENT '关联实体类型：requirement/task/master/warehouse',
  `ref_id`       bigint        DEFAULT NULL                           COMMENT '关联实体ID',
  `project_id`   bigint        DEFAULT NULL                           COMMENT '所属项目ID（可选，便于按项目筛日志）',
  `warehouse_id` bigint        DEFAULT NULL                           COMMENT '关联物料ID（可选，便于按物料筛日志）',
  `summary`      varchar(500)  NOT NULL                               COMMENT '一句话摘要（前端列表直接展示）',
  `before_json`  text                                                 COMMENT '变更前快照JSON（可选）',
  `after_json`   text                                                 COMMENT '变更后快照JSON（可选）',
  `op_user_id`   bigint        DEFAULT NULL                           COMMENT '操作人ID',
  `op_user_name` varchar(64)   DEFAULT NULL                           COMMENT '操作人昵称（冗余便于展示）',
  `op_time`      datetime      NOT NULL DEFAULT CURRENT_TIMESTAMP     COMMENT '操作时间',
  `remark`       varchar(500)  DEFAULT NULL                           COMMENT '备注',
  PRIMARY KEY (`log_id`),
  KEY `idx_op_type` (`op_type`),
  KEY `idx_ref` (`ref_type`, `ref_id`),
  KEY `idx_project_id` (`project_id`),
  KEY `idx_warehouse_id` (`warehouse_id`),
  KEY `idx_op_time` (`op_time`),
  KEY `idx_op_user_id` (`op_user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='库房统一操作日志';


-- ----------------------------------------------------------
-- 3. 修正历史退库单状态（去审批化前的尾巴）
--    type=2 且 status=0 的 8 条历史单子，本意是"已批准的退库"，统一改成 status=1
-- ----------------------------------------------------------
UPDATE `sys_oa_warehouse_master`
   SET `status`     = 1,
       `update_time`= NOW(),
       `update_by`  = 'system_migration'
 WHERE `type`     = 2
   AND `status`   = 0
   AND `del_flag` = 0;
SELECT ROW_COUNT() AS type2_status0_fixed;


-- ----------------------------------------------------------
-- 4. 给 oa_requirements 补可读注释（之前没注释也没乱码，但 status 含义不明）
-- ----------------------------------------------------------
ALTER TABLE `oa_requirements`
    MODIFY COLUMN `status` tinyint(1) NOT NULL DEFAULT 0 COMMENT '完成情况（0=未采购 1=采购中 2=完成 3=取消）',
    COMMENT = '采购需求（项目大件/特殊件，对应"采购需求"菜单）';
