-- ============================================================================
-- Migration: 部门会议管理功能 - 数据库变更
-- Description: 部门会议登记、参会人员管理、会议工时生成
-- 1. 新建 plat_meeting 会议主表
-- 2. 新建 plat_meeting_attendee 参会人员表
-- 3. 新建 plat_meeting_work_hour 会议工时记录表
-- ============================================================================

-- 1. 会议主表
CREATE TABLE `plat_meeting` (
    `id`                BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY COMMENT '主键',
    `meeting_title`     VARCHAR(256)    NOT NULL COMMENT '会议标题',
    `meeting_content`   TEXT            NULL     COMMENT '会议内容/议题',
    `meeting_date`      DATETIME        NOT NULL COMMENT '会议开始时间',
    `meeting_date_end`  DATETIME        NULL     COMMENT '会议结束时间',
    `duration`          DECIMAL(8,2)    NULL     COMMENT '会议时长(小时)',
    `organizer_id`      INT             NOT NULL COMMENT '会议负责人ID',
    `organizer_name`    VARCHAR(64)     NOT NULL COMMENT '会议负责人姓名',
    `status`            VARCHAR(10)     NOT NULL DEFAULT '10' COMMENT '状态: 10=待开始, 20=进行中, 30=已结束',
    `dept_id`           INT             NULL     COMMENT '所属部门ID',
    `remark`            TEXT            NULL     COMMENT '备注',
    `created_by`        INT             NOT NULL COMMENT '创建者',
    `created_name`      VARCHAR(64)     NOT NULL COMMENT '创建人',
    `created_time`      DATETIME        NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `updated_by`        INT             NULL     COMMENT '更新者',
    `updated_name`      VARCHAR(64)     NULL     COMMENT '更新人',
    `updated_time`      DATETIME        NULL     COMMENT '更新时间',
    `deleted_time`      DATETIME        NULL     COMMENT '删除时间',
    INDEX `idx_organizer_id` (`organizer_id`),
    INDEX `idx_dept_id` (`dept_id`),
    INDEX `idx_status` (`status`),
    INDEX `idx_meeting_date` (`meeting_date`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='部门会议记录';

-- 2. 参会人员表
CREATE TABLE `plat_meeting_attendee` (
    `id`                  BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY COMMENT '主键',
    `meeting_id`          INT             NOT NULL COMMENT '会议ID',
    `user_id`             INT             NOT NULL COMMENT '参会人员ID',
    `user_name`           VARCHAR(64)     NOT NULL COMMENT '参会人员姓名',
    `source_type`         VARCHAR(10)     NOT NULL DEFAULT '10' COMMENT '添加来源: 10=手动选择, 20=按部门, 30=按角色',
    `source_id`           INT             NULL     COMMENT '来源ID(部门ID/角色ID)',
    `work_hour_generated` TINYINT         NOT NULL DEFAULT 0 COMMENT '是否已生成工时: 0=否, 1=是',
    `created_by`          INT             NOT NULL COMMENT '创建者',
    `created_name`        VARCHAR(64)     NOT NULL COMMENT '创建人',
    `created_time`        DATETIME        NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `updated_by`          INT             NULL     COMMENT '更新者',
    `updated_name`        VARCHAR(64)     NULL     COMMENT '更新人',
    `updated_time`        DATETIME        NULL     COMMENT '更新时间',
    `deleted_time`        DATETIME        NULL     COMMENT '删除时间',
    INDEX `idx_meeting_id` (`meeting_id`),
    INDEX `idx_user_id` (`user_id`),
    UNIQUE KEY `uk_meeting_user` (`meeting_id`, `user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='会议参会人员';

-- 3. 会议工时记录表
CREATE TABLE `plat_meeting_work_hour` (
    `id`             BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY COMMENT '主键',
    `meeting_id`     INT             NOT NULL COMMENT '关联会议ID',
    `attendee_id`    INT             NOT NULL COMMENT '参会记录ID(plat_meeting_attendee.id)',
    `user_id`        INT             NOT NULL COMMENT '人员ID',
    `user_name`      VARCHAR(64)     NOT NULL COMMENT '人员姓名',
    `work_date`      DATETIME        NOT NULL COMMENT '工时日期',
    `work_hour`      DECIMAL(8,2)    NOT NULL COMMENT '工时(小时)',
    `remark`         TEXT            NULL     COMMENT '工作内容备注',
    `created_by`     INT             NOT NULL COMMENT '创建者',
    `created_name`   VARCHAR(64)     NOT NULL COMMENT '创建人',
    `created_time`   DATETIME        NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `updated_by`     INT             NULL     COMMENT '更新者',
    `updated_name`   VARCHAR(64)     NULL     COMMENT '更新人',
    `updated_time`   DATETIME        NULL     COMMENT '更新时间',
    `deleted_time`   DATETIME        NULL     COMMENT '删除时间',
    INDEX `idx_meeting_id` (`meeting_id`),
    INDEX `idx_user_id` (`user_id`),
    INDEX `idx_work_date` (`work_date`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='会议工时记录';
