-- ==========================================================
-- 轧机模块 Layer 1：项目权限与主人制
-- 目的：添加 manager_id 外键、创建项目成员表
-- 说明：这些变更已在开发环境在线执行，本文件供新环境初始化或追溯使用
-- ==========================================================
-- 前提：fad_rm_project 表已存在（基础模块表）
-- ==========================================================

-- ----------------------------------------------------------
-- 1. fad_rm_project — 添加 manager_id 字段
-- ----------------------------------------------------------
ALTER TABLE `fad_rm_project`
    ADD COLUMN `manager_id` BIGINT DEFAULT NULL COMMENT '项目经理用户ID，关联sys_user.user_id'
    AFTER `manager`;

-- ----------------------------------------------------------
-- 2. 创建项目成员表
-- ----------------------------------------------------------
CREATE TABLE IF NOT EXISTS `fad_rm_project_member` (
    `member_id`   BIGINT       NOT NULL AUTO_INCREMENT COMMENT '成员ID',
    `project_id`  BIGINT       NOT NULL                COMMENT '项目ID',
    `user_id`     BIGINT       NOT NULL                COMMENT '用户ID',
    `role`        VARCHAR(50)  DEFAULT 'member'        COMMENT '角色: manager/member/viewer',
    `create_by`   VARCHAR(64)  DEFAULT ''              COMMENT '创建者',
    `create_time` DATETIME     DEFAULT NULL            COMMENT '创建时间',
    `update_by`   VARCHAR(64)  DEFAULT ''              COMMENT '更新者',
    `update_time` DATETIME     DEFAULT NULL            COMMENT '更新时间',
    `del_flag`    INT          DEFAULT 0               COMMENT '删除标志',
    PRIMARY KEY (`member_id`),
    UNIQUE KEY `uk_project_user` (`project_id`, `user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='项目成员表';

-- ----------------------------------------------------------
-- 3. fad_rm_drawing_compare — 补齐缺失字段
-- ----------------------------------------------------------
ALTER TABLE `fad_rm_drawing_compare`
    ADD COLUMN `optimizer`     VARCHAR(50)  DEFAULT NULL COMMENT '优化人'    AFTER `new_version`,
    ADD COLUMN `compare_date`  DATE         DEFAULT NULL COMMENT '比较日期'  AFTER `optimizer`,
    ADD COLUMN `status`        VARCHAR(20)  DEFAULT 'pending' COMMENT '状态' AFTER `compare_date`,
    ADD COLUMN `before_desc`   TEXT         DEFAULT NULL COMMENT '优化前描述' AFTER `status`,
    ADD COLUMN `after_desc`    TEXT         DEFAULT NULL COMMENT '优化后描述' AFTER `before_desc`;

-- ----------------------------------------------------------
-- 4. sys_menu — 添加项目预算菜单条目（路由注册）
-- ----------------------------------------------------------
-- 注：menu_id 使用 MAX(menu_id)+1 生成，避免冲突
-- 新环境首次导入时需先查询 MAX(menu_id) 或使用自增主键
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`)
SELECT MAX(`menu_id`) + 1, '项目预算', 2065320360688402434, 2, 'budget', 'rm/budget/index', 1, 0, 'C', '0', '0', NULL, 'el-icon-coin', 'admin', NOW()
FROM `sys_menu`;

-- ----------------------------------------------------------
-- 5. 修正：采购与合同/图纸与资料/发货与安装 父菜单 component 修复
-- ----------------------------------------------------------
-- 这三个父菜单的 component 被误设为 'Layout'，导致点击后内嵌整个布局造成双层侧边栏
UPDATE `sys_menu` SET `component` = 'ParentView'
WHERE `menu_id` IN (
    2064586808972374030,  -- 采购与合同
    2064586808972374040,  -- 图纸与资料
    2064586808972374050   -- 发货与安装
);

-- ----------------------------------------------------------
-- 6. 索引补充（确保所有 fad_rm_* 表有 project_id 索引）
-- ----------------------------------------------------------
-- fad_rm_project_member 已通过 UNIQUE KEY 覆盖，不再添加额外索引

-- ----------------------------------------------------------
-- 7. fad_rm_stage_confirm — 阶段完成确认表
-- ----------------------------------------------------------
CREATE TABLE IF NOT EXISTS `fad_rm_stage_confirm` (
    `confirm_id`   BIGINT       NOT NULL AUTO_INCREMENT COMMENT '确认ID',
    `project_id`   BIGINT       NOT NULL                COMMENT '项目ID',
    `stage_key`    VARCHAR(50)  NOT NULL                COMMENT '阶段标识',
    `confirm_type` VARCHAR(20)  DEFAULT 'confirm'       COMMENT '确认类型: confirm=正常确认, override=强制放行',
    `confirmer_id` BIGINT       NOT NULL                COMMENT '确认人用户ID',
    `confirmed_at` DATETIME     DEFAULT CURRENT_TIMESTAMP COMMENT '确认时间',
    `remark`       VARCHAR(255) DEFAULT NULL            COMMENT '备注',
    `create_by`    VARCHAR(64)  DEFAULT ''              COMMENT '创建者',
    `create_time`  DATETIME     DEFAULT NULL            COMMENT '创建时间',
    `update_by`    VARCHAR(64)  DEFAULT ''              COMMENT '更新者',
    `update_time`  DATETIME     DEFAULT NULL            COMMENT '更新时间',
    `del_flag`     INT          DEFAULT 0               COMMENT '删除标志',
    PRIMARY KEY (`confirm_id`),
    UNIQUE KEY `uk_project_stage` (`project_id`, `stage_key`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='阶段完成确认表';
