-- ============================================
-- 为转化率统计添加关联字段
-- ============================================
-- 说明：此脚本为转化率统计功能添加关联字段，用于追踪邀约→预约→开单/耗卡的完整业务链路
-- 执行顺序：按照业务链路顺序依次执行
-- 
-- 业务链路：
-- 邀约记录 (lq_yaoyjl) → 预约记录 (lq_yyjl) → 开单记录 (lq_kd_kdjlb) / 耗卡记录 (lq_xh_hyhk)
-- 
-- 字段说明：
-- 1. lq_yyjl.F_InviteId：关联邀约记录ID，用于统计邀约→预约转化率
-- 2. lq_kd_kdjlb.F_AppointmentId：关联预约记录ID，用于统计预约→开单转化率
-- 3. lq_xh_hyhk.F_AppointmentId：关联预约记录ID，用于统计预约→耗卡转化率
-- 
-- 注意事项：
-- - 所有字段允许为NULL，因为历史数据可能没有这些关联
-- - 字段类型为VARCHAR(50)，与其他ID字段保持一致
-- - 已为所有字段创建索引，以优化查询性能

-- ============================================
-- 1. lq_yyjl（预约记录表） - 添加邀约ID字段和未成交说明字段
-- ============================================
-- 说明：关联邀约记录，用于统计邀约→预约转化率
ALTER TABLE lq_yyjl 
ADD COLUMN F_InviteId VARCHAR(50) NULL COMMENT '邀约记录ID（关联lq_yaoyjl.F_Id，用于统计邀约→预约转化率）' AFTER F_Status,
ADD COLUMN F_NoDealRemark VARCHAR(2000) NULL COMMENT '未成交说明' AFTER F_InviteId;

-- 创建索引以优化查询性能
CREATE INDEX idx_yyjl_invite_id ON lq_yyjl(F_InviteId);

-- ============================================
-- 2. lq_kd_kdjlb（开单记录表） - 添加预约ID字段
-- ============================================
-- 说明：关联预约记录，用于统计预约→开单转化率
ALTER TABLE lq_kd_kdjlb 
ADD COLUMN F_AppointmentId VARCHAR(50) NULL COMMENT '预约记录ID（关联lq_yyjl.F_Id，用于统计预约→开单转化率）' AFTER F_ActivityId;

-- 创建索引以优化查询性能
CREATE INDEX idx_kdjlb_appointment_id ON lq_kd_kdjlb(F_AppointmentId);

-- ============================================
-- 3. lq_xh_hyhk（耗卡记录表） - 添加预约ID字段
-- ============================================
-- 说明：关联预约记录，用于统计预约→耗卡转化率
ALTER TABLE lq_xh_hyhk 
ADD COLUMN F_AppointmentId VARCHAR(50) NULL COMMENT '预约记录ID（关联lq_yyjl.F_Id，用于统计预约→耗卡转化率）' AFTER F_OvertimeSgfy;

-- 创建索引以优化查询性能
CREATE INDEX idx_hyhk_appointment_id ON lq_xh_hyhk(F_AppointmentId);

-- ============================================
-- 4. 验证字段创建
-- ============================================
-- 验证 lq_yyjl 表
-- SELECT COLUMN_NAME, DATA_TYPE, IS_NULLABLE, COLUMN_COMMENT 
-- FROM INFORMATION_SCHEMA.COLUMNS 
-- WHERE TABLE_NAME = 'lq_yyjl' 
--   AND (COLUMN_NAME = 'F_InviteId' OR COLUMN_NAME = 'F_NoDealRemark');

-- 验证 lq_kd_kdjlb 表
-- SELECT COLUMN_NAME, DATA_TYPE, IS_NULLABLE, COLUMN_COMMENT 
-- FROM INFORMATION_SCHEMA.COLUMNS 
-- WHERE TABLE_NAME = 'lq_kd_kdjlb' 
--   AND COLUMN_NAME = 'F_AppointmentId';

-- 验证 lq_xh_hyhk 表
-- SELECT COLUMN_NAME, DATA_TYPE, IS_NULLABLE, COLUMN_COMMENT 
-- FROM INFORMATION_SCHEMA.COLUMNS 
-- WHERE TABLE_NAME = 'lq_xh_hyhk' 
--   AND COLUMN_NAME = 'F_AppointmentId';

-- ============================================
-- 5. 验证索引创建
-- ============================================
-- 验证索引
-- SHOW INDEX FROM lq_yyjl WHERE Key_name = 'idx_yyjl_invite_id';
-- SHOW INDEX FROM lq_kd_kdjlb WHERE Key_name = 'idx_kdjlb_appointment_id';
-- SHOW INDEX FROM lq_xh_hyhk WHERE Key_name = 'idx_hyhk_appointment_id';

-- ============================================
-- 6. 转化率统计示例SQL（供参考）
-- ============================================
-- 示例1：邀约→预约转化率
-- SELECT 
--     COUNT(DISTINCT yyjl.F_Id) AS 预约数量,
--     COUNT(DISTINCT yyjl.F_InviteId) AS 来自邀约的预约数量,
--     COUNT(DISTINCT yyjl.F_InviteId) * 100.0 / COUNT(DISTINCT yyjl.F_Id) AS 转化率百分比
-- FROM lq_yyjl yyjl
-- WHERE yyjl.F_CreateTime >= '2024-01-01';

-- 示例2：预约→开单转化率
-- SELECT 
--     COUNT(DISTINCT yyjl.F_Id) AS 预约数量,
--     COUNT(DISTINCT kdjlb.F_Id) AS 开单数量,
--     COUNT(DISTINCT kdjlb.F_Id) * 100.0 / COUNT(DISTINCT yyjl.F_Id) AS 转化率百分比
-- FROM lq_yyjl yyjl
-- LEFT JOIN lq_kd_kdjlb kdjlb ON kdjlb.F_AppointmentId = yyjl.F_Id AND kdjlb.F_IsEffective = 1
-- WHERE yyjl.F_CreateTime >= '2024-01-01';

-- 示例3：预约→耗卡转化率
-- SELECT 
--     COUNT(DISTINCT yyjl.F_Id) AS 预约数量,
--     COUNT(DISTINCT hyhk.F_Id) AS 耗卡数量,
--     COUNT(DISTINCT hyhk.F_Id) * 100.0 / COUNT(DISTINCT yyjl.F_Id) AS 转化率百分比
-- FROM lq_yyjl yyjl
-- LEFT JOIN lq_xh_hyhk hyhk ON hyhk.F_AppointmentId = yyjl.F_Id AND hyhk.F_IsEffective = 1
-- WHERE yyjl.F_CreateTime >= '2024-01-01';

-- 示例4：邀约→开单转化率（跨步转化）
-- SELECT 
--     COUNT(DISTINCT yaoyjl.F_Id) AS 邀约数量,
--     COUNT(DISTINCT kdjlb.F_Id) AS 开单数量,
--     COUNT(DISTINCT kdjlb.F_Id) * 100.0 / COUNT(DISTINCT yaoyjl.F_Id) AS 转化率百分比
-- FROM lq_yaoyjl yaoyjl
-- LEFT JOIN lq_yyjl yyjl ON yyjl.F_InviteId = yaoyjl.F_Id
-- LEFT JOIN lq_kd_kdjlb kdjlb ON kdjlb.F_AppointmentId = yyjl.F_Id AND kdjlb.F_IsEffective = 1
-- WHERE yaoyjl.F_CreateTime >= '2024-01-01';

