-- 钉钉「技术方案申请表」审批通过后落库（业务 MySQL 执行一次）
-- 宽表字段改为单列 wf_values_json（避免 InnoDB 行大小 >8126）：key=控件 id，value={ "value","ext" }
-- 与 form_label_map（id->中文名）键一致，均为钉钉 componentId

CREATE TABLE IF NOT EXISTS ding_scheme_application
(
    id                       BIGINT       NOT NULL AUTO_INCREMENT COMMENT '主键',
    process_instance_id      VARCHAR(64)  NOT NULL COMMENT '钉钉审批实例 ID',
    business_id              VARCHAR(64)           DEFAULT NULL COMMENT '钉钉 businessId',
    process_code             VARCHAR(128)          DEFAULT NULL COMMENT '审批模板 processCode',
    title                    VARCHAR(512)          DEFAULT NULL COMMENT '审批标题',
    instance_result          VARCHAR(32)           DEFAULT NULL COMMENT '实例审批结果 agree/refuse 等',
    ding_process_status      VARCHAR(32)           DEFAULT NULL COMMENT '钉钉实例状态 COMPLETED 等',
    originator_user_id       VARCHAR(64)           DEFAULT NULL COMMENT '发起人 userId',
    originator_dept_name     VARCHAR(256)          DEFAULT NULL COMMENT '发起人部门',
    ding_instance_create_time DATETIME             DEFAULT NULL COMMENT '钉钉实例创建时间',
    ding_instance_finish_time DATETIME            DEFAULT NULL COMMENT '钉钉实例结束时间',
    trigger_event_type       VARCHAR(64)           DEFAULT NULL COMMENT '触发入库的事件类型',
    form_json                MEDIUMTEXT COMMENT '表单控件快照 JSON（完整备份）',
    form_label_map           MEDIUMTEXT COMMENT '控件 id -> 中文 name（JSON）',
    wf_values_json           LONGTEXT COMMENT '控件 id -> {value,ext}（JSON，与 gen-ding-scheme-wide IDS 顺序写入）',
    scheme_apply_no          VARCHAR(128)          DEFAULT NULL COMMENT '方案申请编号(冗余)',
    overview_name            VARCHAR(1000)         DEFAULT NULL COMMENT '概述名称(冗余)',
    filler_name              VARCHAR(128)          DEFAULT NULL COMMENT '填表人展示名(冗余)',
    fill_date                DATE                  DEFAULT NULL COMMENT '填表日期(冗余)',
    need_date                DATE                  DEFAULT NULL COMMENT '需求日期(冗余)',
    customer_full_name       VARCHAR(512)          DEFAULT NULL COMMENT '客户全称(冗余)',
    contact_and_phone        VARCHAR(512)          DEFAULT NULL COMMENT '联系人及电话(冗余)',
    project_category         VARCHAR(128)          DEFAULT NULL COMMENT '项目分类(冗余)',
    product_name             VARCHAR(256)          DEFAULT NULL COMMENT '产品名称(冗余)',
    task_detail              VARCHAR(2000)         DEFAULT NULL COMMENT '任务详情(冗余)',
    scheme_submit_date       DATE                  DEFAULT NULL COMMENT '方案提交日期(冗余)',
    scheme_received          VARCHAR(32)           DEFAULT NULL COMMENT '是否收到方案(冗余)',
    plm_push_status          VARCHAR(32)           DEFAULT 'PENDING' COMMENT 'PLM 推送状态 PENDING/SUCCESS/FAIL 等',
    plm_push_time            DATETIME              DEFAULT NULL COMMENT 'PLM 推送时间',
    plm_push_message          VARCHAR(1000)         DEFAULT NULL COMMENT 'PLM 推送结果说明',
    create_by                VARCHAR(64)           DEFAULT '',
    create_time              DATETIME              DEFAULT NULL,
    update_by                VARCHAR(64)           DEFAULT '',
    update_time              DATETIME              DEFAULT NULL,
    PRIMARY KEY (id),
    UNIQUE KEY uk_process_instance (process_instance_id),
    KEY idx_scheme_apply_no (scheme_apply_no),
    KEY idx_business_id (business_id),
    KEY idx_plm_push_status (plm_push_status)
) ENGINE = InnoDB
  ROW_FORMAT = DYNAMIC
  DEFAULT CHARSET = utf8mb4 COMMENT ='钉钉技术方案申请表审批归档';
