-- ==========================================
-- 流量看板V2 数据表和菜单配置
-- ==========================================

-- ----------------------------
-- 1. 数据表创建
-- ----------------------------

-- 客户统计数据表V2（支持标签级成本，行列转换存储）
DROP TABLE IF EXISTS `customer_statistics_data_v2`;

CREATE TABLE `customer_statistics_data_v2` (
    `id` BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
    `corp_id` VARCHAR(100) NOT NULL COMMENT '企业ID',
    `cur_date` DATE NOT NULL COMMENT '统计日期',
    
    -- 维度信息
    `group_name` VARCHAR(50) NOT NULL COMMENT '组名（N组、O组等）',
    `tag_name` VARCHAR(100) DEFAULT NULL COMMENT '标签名（NULL表示组级汇总）',
    `tag_group_id` VARCHAR(100) DEFAULT NULL COMMENT '标签组ID（关联wecom_tag_group）',
    `tag_id` VARCHAR(100) DEFAULT NULL COMMENT '标签ID（关联wecom_tag）',
    
    -- 层级关系
    `data_level` TINYINT DEFAULT 1 COMMENT '数据级别：1-组级汇总，2-标签级明细',
    `parent_id` BIGINT(20) DEFAULT NULL COMMENT '父记录ID（标签级数据对应组级记录的ID）',
    
    -- 成本数据（支持标签级成本）
    `total_cost` DECIMAL(12,2) DEFAULT NULL COMMENT '总成本（手工录入）',
    `single_cost` DECIMAL(12,2) DEFAULT NULL COMMENT '单条成本（计算得出）',
    `order_cost` DECIMAL(12,2) DEFAULT NULL COMMENT '成单成本（计算得出）',
    `cost_input_type` VARCHAR(20) DEFAULT NULL COMMENT '成本录入类型：total-总成本，single-单条成本',
    
    -- 数量指标
    `order_count` INT DEFAULT 0 COMMENT '成单数',
    `customer_count` INT DEFAULT 0 COMMENT '进粉数',
    `timely_order_count` INT DEFAULT 0 COMMENT '及时单数',
    `non_timely_order_count` INT DEFAULT 0 COMMENT '非及时单数',
    
    -- 比率指标
    `conversion_rate` VARCHAR(10) DEFAULT '0%' COMMENT '转化率',
    `timely_rate` VARCHAR(10) DEFAULT '0%' COMMENT '及时单占比',
    `non_timely_rate` VARCHAR(10) DEFAULT '0%' COMMENT '非及时单占比',
    
    -- 客户属性指标
    `customer_attr_count` INT DEFAULT 0 COMMENT '客户属性数量',
    `parent_count` INT DEFAULT 0 COMMENT '家长数量',
    `student_count` INT DEFAULT 0 COMMENT '学生数量',
    `teacher_count` INT DEFAULT 0 COMMENT '老师数量',
    `unknown_attr_count` INT DEFAULT 0 COMMENT '未知属性数量',
    `parent_rate` VARCHAR(10) DEFAULT '0%' COMMENT '家长占比',
    `student_rate` VARCHAR(10) DEFAULT '0%' COMMENT '学生占比',
    `teacher_rate` VARCHAR(10) DEFAULT '0%' COMMENT '老师占比',
    `unknown_rate` VARCHAR(10) DEFAULT '0%' COMMENT '未知占比',
    
    -- 出单率指标
    `parent_order_count` INT DEFAULT 0 COMMENT '家长出单数量',
    `student_order_count` INT DEFAULT 0 COMMENT '学生出单数量',
    `teacher_order_count` INT DEFAULT 0 COMMENT '老师出单数量',
    `unknown_order_count` INT DEFAULT 0 COMMENT '未知出单数量',
    `parent_daily_count` INT DEFAULT 0 COMMENT '家长当日数量',
    `student_daily_count` INT DEFAULT 0 COMMENT '学生当日数量',
    `teacher_daily_count` INT DEFAULT 0 COMMENT '老师当日数量',
    `unknown_daily_count` INT DEFAULT 0 COMMENT '未知当日数量',
    `parent_daily_order_count` INT DEFAULT 0 COMMENT '家长当日出单数量',
    `student_daily_order_count` INT DEFAULT 0 COMMENT '学生当日出单数量',
    `teacher_daily_order_count` INT DEFAULT 0 COMMENT '老师当日出单数量',
    `unknown_daily_order_count` INT DEFAULT 0 COMMENT '未知当日出单数量',
    `parent_order_rate` VARCHAR(10) DEFAULT '0%' COMMENT '家长出单率',
    `student_order_rate` VARCHAR(10) DEFAULT '0%' COMMENT '学生出单率',
    `teacher_order_rate` VARCHAR(10) DEFAULT '0%' COMMENT '老师出单率',
    `unknown_order_rate` VARCHAR(10) DEFAULT '0%' COMMENT '未知出单率',
    
    -- 意向度指标
    `intention_count` INT DEFAULT 0 COMMENT '意向度数量',
    `active_quote_count` INT DEFAULT 0 COMMENT '主动报价数量',
    `passive_quote_count` INT DEFAULT 0 COMMENT '被动报价数量',
    `no_quote_count` INT DEFAULT 0 COMMENT '未开口报价数量',
    `deleted_quote_count` INT DEFAULT 0 COMMENT '已删除报价数量',
    `active_quote_rate` VARCHAR(10) DEFAULT '0%' COMMENT '主动报价占比',
    `passive_quote_rate` VARCHAR(10) DEFAULT '0%' COMMENT '被动报价占比',
    `no_quote_rate` VARCHAR(10) DEFAULT '0%' COMMENT '未开口报价占比',
    `deleted_quote_rate` VARCHAR(10) DEFAULT '0%' COMMENT '已删除报价占比',
    
    -- 年级指标
    `grade_count` INT DEFAULT 0 COMMENT '年级数量',
    `primary_count` INT DEFAULT 0 COMMENT '小学数量',
    `middle_count` INT DEFAULT 0 COMMENT '初中数量',
    `high_count` INT DEFAULT 0 COMMENT '高中数量',
    `primary_rate` VARCHAR(10) DEFAULT '0%' COMMENT '小学占比',
    `middle_rate` VARCHAR(10) DEFAULT '0%' COMMENT '初中占比',
    `high_rate` VARCHAR(10) DEFAULT '0%' COMMENT '高中占比',
    
    `sort_no` INT DEFAULT 0 COMMENT '排序号',
    `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    
    PRIMARY KEY (`id`),
    UNIQUE KEY `uk_corp_date_group_tag` (`corp_id`, `cur_date`, `group_name`, `tag_name`),
    INDEX `idx_corp_date` (`corp_id`, `cur_date`),
    INDEX `idx_group_name` (`group_name`),
    INDEX `idx_data_level` (`data_level`),
    INDEX `idx_parent_id` (`parent_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='客户统计数据表V2（支持标签级成本，行列转换）';

-- 成本录入记录表（用于追溯）
DROP TABLE IF EXISTS `cost_input_record_v2`;

CREATE TABLE `cost_input_record_v2` (
    `id` BIGINT(20) NOT NULL AUTO_INCREMENT,
    `corp_id` VARCHAR(100) NOT NULL COMMENT '企业ID',
    `cur_date` DATE NOT NULL COMMENT '统计日期',
    `group_name` VARCHAR(50) NOT NULL COMMENT '组名',
    `tag_name` VARCHAR(100) DEFAULT NULL COMMENT '标签名（NULL表示组级）',
    `cost_type` VARCHAR(20) NOT NULL COMMENT 'total-总成本，single-单条成本',
    `input_value` DECIMAL(12,2) NOT NULL COMMENT '录入值',
    `actual_total_cost` DECIMAL(12,2) NOT NULL COMMENT '实际总成本',
    `input_by` VARCHAR(50) DEFAULT NULL COMMENT '录入人',
    `input_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '录入时间',
    `remark` VARCHAR(500) DEFAULT NULL COMMENT '备注',
    PRIMARY KEY (`id`),
    INDEX `idx_corp_date_group` (`corp_id`, `cur_date`, `group_name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='成本录入记录表V2';


-- ----------------------------
-- 2. 菜单配置
-- 父菜单ID: 2000 (企业微信统计)
-- 新菜单ID从 2100 开始
-- ----------------------------

-- 流量看板V2 菜单（主菜单）
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `route_name`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`)
VALUES (2100, '流量看板V2', 2000, 0, 'customerStatisticsV2', 'wecom/customerStatisticsV2/index', NULL, 'CustomerStatisticsV2', 1, 0, 'C', '0', '0', 'wecom:customerStatisticsV2:list', 'chart', 'admin', NOW(), '', NULL, '流量看板V2菜单（支持标签级成本）');

-- 流量看板V2 - 查询按钮
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `route_name`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`)
VALUES (2101, '流量看板V2查询', 2100, 1, '#', '', NULL, '', 1, 0, 'F', '0', '0', 'wecom:customerStatisticsV2:query', '#', 'admin', NOW(), '', NULL, '');

-- 流量看板V2 - 新增按钮
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `route_name`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`)
VALUES (2102, '流量看板V2新增', 2100, 2, '#', '', NULL, '', 1, 0, 'F', '0', '0', 'wecom:customerStatisticsV2:add', '#', 'admin', NOW(), '', NULL, '');

-- 流量看板V2 - 修改按钮
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `route_name`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`)
VALUES (2103, '流量看板V2修改', 2100, 3, '#', '', NULL, '', 1, 0, 'F', '0', '0', 'wecom:customerStatisticsV2:edit', '#', 'admin', NOW(), '', NULL, '');

-- 流量看板V2 - 删除按钮
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `route_name`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`)
VALUES (2104, '流量看板V2删除', 2100, 4, '#', '', NULL, '', 1, 0, 'F', '0', '0', 'wecom:customerStatisticsV2:remove', '#', 'admin', NOW(), '', NULL, '');

-- 流量看板V2 - 导出按钮
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `route_name`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`)
VALUES (2105, '流量看板V2导出', 2100, 5, '#', '', NULL, '', 1, 0, 'F', '0', '0', 'wecom:customerStatisticsV2:export', '#', 'admin', NOW(), '', NULL, '');

-- 流量看板V2 - 成本录入按钮
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `route_name`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`)
VALUES (2106, '流量看板V2成本录入', 2100, 6, '#', '', NULL, '', 1, 0, 'F', '0', '0', 'wecom:customerStatisticsV2:cost', '#', 'admin', NOW(), '', NULL, '');

-- 流量看板V2 - 重新计算按钮
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `route_name`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`)
VALUES (2107, '流量看板V2重新计算', 2100, 7, '#', '', NULL, '', 1, 0, 'F', '0', '0', 'wecom:customerStatisticsV2:recalculate', '#', 'admin', NOW(), '', NULL, '');

-- 流量看板V2 - 树状数据查询
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `route_name`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`)
VALUES (2108, '流量看板V2树状查询', 2100, 8, '#', '', NULL, '', 1, 0, 'F', '0', '0', 'wecom:customerStatisticsV2:tree', '#', 'admin', NOW(), '', NULL, '');


-- ----------------------------
-- 3. 菜单说明
-- ----------------------------
-- 菜单类型说明:
-- M: 目录
-- C: 菜单
-- F: 按钮
-- 
-- 菜单层级结构:
-- 2000 企业微信统计 (目录)
--   ├── 2001 客户列表数据
--   ├── 2002 客户联系统计
--   ├── 2003 流量看板数据 (原V1版本)
--   ├── 2004 销售看板数据
--   ├── 2100 流量看板V2 (新增，支持标签级成本)
--   │     ├── 2101 查询
--   │     ├── 2102 新增
--   │     ├── 2103 修改
--   │     ├── 2104 删除
--   │     ├── 2105 导出
--   │     ├── 2106 成本录入
--   │     ├── 2107 重新计算
--   │     └── 2108 树状查询
--   └── 3000 企业信息
