-- ============================================================
-- 顺延强制管理 · 数据层
-- ============================================================

DROP TABLE IF EXISTS oa_postpone_record;

CREATE TABLE oa_postpone_record (
  id                  BIGINT        NOT NULL AUTO_INCREMENT COMMENT '主键',
  business_type       VARCHAR(64)   NOT NULL COMMENT '业务类型 task / step / requirement',
  business_id         BIGINT        NOT NULL COMMENT '业务表主键',
  business_title      VARCHAR(255)           DEFAULT NULL COMMENT '业务名称（冗余展示）',
  owner_id            BIGINT        NOT NULL COMMENT '事项 owner（顺延申请人）',
  owner_name          VARCHAR(64)            DEFAULT NULL,
  original_deadline   DATETIME      NOT NULL COMMENT '本次顺延前的截止时间',
  new_deadline        DATETIME      NOT NULL COMMENT '申请的新截止时间',
  reason              VARCHAR(1024) NOT NULL COMMENT '顺延理由',
  postpone_seq        INT           NOT NULL COMMENT '这是第几次顺延（含本次）',
  need_approval       TINYINT       NOT NULL DEFAULT 0 COMMENT '0直接生效 1需要审批',
  approval_instance_id BIGINT                DEFAULT NULL COMMENT '审批单 id',
  status              TINYINT       NOT NULL DEFAULT 1 COMMENT '0待审批 1已生效 2被驳回 3已撤回',
  create_by           VARCHAR(64)            DEFAULT NULL,
  create_time         DATETIME               DEFAULT CURRENT_TIMESTAMP,
  update_by           VARCHAR(64)            DEFAULT NULL,
  update_time         DATETIME               DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  del_flag            TINYINT       NOT NULL DEFAULT 0,
  PRIMARY KEY (id),
  KEY idx_biz   (business_type, business_id),
  KEY idx_owner (owner_id),
  KEY idx_inst  (approval_instance_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='顺延记录（任务/步骤/采购需求 通用）';

-- 在审批配置里注册 3 个新业务（第 3 次及以后顺延会调 approvalService.submit 用到）
INSERT INTO oa_approval_config (business_type, business_name, approver_ids, sign_type, enabled, remark) VALUES
  ('task_postpone', '任务顺延（第3次起）',     '1', 1, 1, '默认 admin 占位，请改成项目负责人'),
  ('step_postpone', '进度步骤顺延（第3次起）', '1', 1, 1, '默认 admin 占位，请改成项目负责人'),
  ('req_postpone',  '采购需求顺延（第3次起）', '1', 1, 1, '默认 admin 占位，请改成项目负责人');
