fix(aihr): align practice scoring with BRD five dimensions
This commit is contained in:
@@ -32,6 +32,9 @@ CREATE TABLE IF NOT EXISTS `aihr_practice_session` (
|
||||
`scenario_name` varchar(100) DEFAULT NULL COMMENT '场景名称',
|
||||
`mode` varchar(30) DEFAULT 'text' COMMENT '训练模式',
|
||||
`total_score` int DEFAULT NULL COMMENT '总分',
|
||||
`dim_task_completion` int DEFAULT NULL COMMENT '任务完成度分',
|
||||
`dim_response_timeliness` int DEFAULT NULL COMMENT '响应时效分',
|
||||
`response_latency_ms` int DEFAULT NULL COMMENT '平均陪练响应时长毫秒',
|
||||
`dim_compliance` int DEFAULT NULL COMMENT '合规分',
|
||||
`dim_emotion` int DEFAULT NULL COMMENT '情绪分',
|
||||
`dim_communication` int DEFAULT NULL COMMENT '沟通分',
|
||||
@@ -354,7 +357,7 @@ SELECT
|
||||
CONCAT(`scenario_name`, ' Rubric'),
|
||||
'v1',
|
||||
1,
|
||||
'生活顾问试点四维评分标准',
|
||||
'生活顾问试点五维评分标准',
|
||||
NOW(),
|
||||
NOW()
|
||||
FROM `aihr_practice_scenario`
|
||||
@@ -373,11 +376,7 @@ SELECT
|
||||
r.`rubric_code`,
|
||||
d.`dimension_code`,
|
||||
d.`dimension_name`,
|
||||
CASE
|
||||
WHEN s.`scenario_type` = '催费/停车费' AND d.`dimension_code` = 'compliance' THEN 0.30
|
||||
WHEN s.`scenario_type` = '催费/停车费' AND d.`dimension_code` = 'marketing' THEN 0.20
|
||||
ELSE d.`weight`
|
||||
END,
|
||||
d.`weight`,
|
||||
d.`description`,
|
||||
d.`sort_order`,
|
||||
NOW(),
|
||||
@@ -386,10 +385,11 @@ FROM `aihr_practice_rubric` r
|
||||
JOIN `aihr_practice_scenario` s
|
||||
ON s.`tenant_id` = r.`tenant_id` AND s.`scenario_code` = r.`scenario_code`
|
||||
JOIN (
|
||||
SELECT 'compliance' AS `dimension_code`, '合规' AS `dimension_name`, 0.35 AS `weight`, 'SOP关键点、权限边界、承诺口径' AS `description`, 10 AS `sort_order`
|
||||
UNION ALL SELECT 'communication', '沟通', 0.25, '诉求确认、信息结构、反馈节点', 20
|
||||
UNION ALL SELECT 'emotion', '情绪', 0.25, '共情承接、降温、信任恢复', 30
|
||||
UNION ALL SELECT 'marketing', '营销', 0.15, '收费季转化、政策解释、办理引导', 40
|
||||
SELECT 'task_completion' AS `dimension_code`, '任务完成度' AS `dimension_name`, 0.40 AS `weight`, '问题解决有效性、工单闭环率、首解率、SOP关键点执行率' AS `description`, 10 AS `sort_order`
|
||||
UNION ALL SELECT 'standardization', '话术规范性', 0.25, '流程完整性、法规引用准确性、沟通合规、用语专业度', 20
|
||||
UNION ALL SELECT 'emotion', '情绪管理能力', 0.20, '共情、语速语气控制、业主情绪引导安抚有效性', 30
|
||||
UNION ALL SELECT 'response_timeliness', '响应时效', 0.10, '首响时长、处理周期、跟进频率', 40
|
||||
UNION ALL SELECT 'marketing', '增值转化潜力', 0.05, '活动引导、产品推介时机与成功率', 50
|
||||
) d
|
||||
WHERE r.`tenant_id` = '000000'
|
||||
ON DUPLICATE KEY UPDATE
|
||||
|
||||
@@ -0,0 +1,100 @@
|
||||
-- AIHR 对练五维评分迁移(MySQL 8.x)
|
||||
-- 补齐会话结构与生活顾问试点 Rubric,不写入训练业务数据;可重复执行。
|
||||
|
||||
SET @aihr_practice_table_exists := (
|
||||
SELECT COUNT(*)
|
||||
FROM information_schema.TABLES
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'aihr_practice_session'
|
||||
);
|
||||
|
||||
SET @aihr_task_completion_exists := (
|
||||
SELECT COUNT(*)
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'aihr_practice_session'
|
||||
AND COLUMN_NAME = 'dim_task_completion'
|
||||
);
|
||||
SET @aihr_task_completion_ddl := IF(
|
||||
@aihr_practice_table_exists = 1 AND @aihr_task_completion_exists = 0,
|
||||
'ALTER TABLE aihr_practice_session ADD COLUMN `dim_task_completion` int DEFAULT NULL COMMENT ''任务完成度分'' AFTER `total_score`',
|
||||
'SELECT 1'
|
||||
);
|
||||
PREPARE aihr_task_completion_stmt FROM @aihr_task_completion_ddl;
|
||||
EXECUTE aihr_task_completion_stmt;
|
||||
DEALLOCATE PREPARE aihr_task_completion_stmt;
|
||||
|
||||
SET @aihr_response_timeliness_exists := (
|
||||
SELECT COUNT(*)
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'aihr_practice_session'
|
||||
AND COLUMN_NAME = 'dim_response_timeliness'
|
||||
);
|
||||
SET @aihr_response_timeliness_ddl := IF(
|
||||
@aihr_practice_table_exists = 1 AND @aihr_response_timeliness_exists = 0,
|
||||
'ALTER TABLE aihr_practice_session ADD COLUMN `dim_response_timeliness` int DEFAULT NULL COMMENT ''响应时效分'' AFTER `dim_task_completion`',
|
||||
'SELECT 1'
|
||||
);
|
||||
PREPARE aihr_response_timeliness_stmt FROM @aihr_response_timeliness_ddl;
|
||||
EXECUTE aihr_response_timeliness_stmt;
|
||||
DEALLOCATE PREPARE aihr_response_timeliness_stmt;
|
||||
|
||||
SET @aihr_response_latency_exists := (
|
||||
SELECT COUNT(*)
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'aihr_practice_session'
|
||||
AND COLUMN_NAME = 'response_latency_ms'
|
||||
);
|
||||
SET @aihr_response_latency_ddl := IF(
|
||||
@aihr_practice_table_exists = 1 AND @aihr_response_latency_exists = 0,
|
||||
'ALTER TABLE aihr_practice_session ADD COLUMN `response_latency_ms` int DEFAULT NULL COMMENT ''平均陪练响应时长毫秒'' AFTER `dim_response_timeliness`',
|
||||
'SELECT 1'
|
||||
);
|
||||
PREPARE aihr_response_latency_stmt FROM @aihr_response_latency_ddl;
|
||||
EXECUTE aihr_response_latency_stmt;
|
||||
DEALLOCATE PREPARE aihr_response_latency_stmt;
|
||||
|
||||
CREATE TEMPORARY TABLE IF NOT EXISTS aihr_brd_rubric_codes (
|
||||
tenant_id varchar(20) NOT NULL,
|
||||
rubric_code varchar(100) NOT NULL,
|
||||
PRIMARY KEY (tenant_id, rubric_code)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
||||
|
||||
DELETE FROM aihr_brd_rubric_codes;
|
||||
|
||||
INSERT INTO aihr_brd_rubric_codes (tenant_id, rubric_code)
|
||||
SELECT r.tenant_id, r.rubric_code
|
||||
FROM aihr_practice_rubric r
|
||||
JOIN aihr_practice_scenario s
|
||||
ON s.tenant_id = r.tenant_id AND s.scenario_code = r.scenario_code
|
||||
JOIN (
|
||||
SELECT tenant_id, rubric_code
|
||||
FROM aihr_practice_rubric_dimension
|
||||
WHERE dimension_code IN ('compliance', 'communication', 'emotion', 'marketing')
|
||||
GROUP BY tenant_id, rubric_code
|
||||
HAVING COUNT(*) = 4
|
||||
) old_dimensions
|
||||
ON old_dimensions.tenant_id = r.tenant_id AND old_dimensions.rubric_code = r.rubric_code
|
||||
WHERE r.tenant_id = '000000'
|
||||
AND s.position = '生活顾问';
|
||||
|
||||
DELETE d
|
||||
FROM aihr_practice_rubric_dimension d
|
||||
JOIN aihr_brd_rubric_codes r
|
||||
ON r.tenant_id = d.tenant_id AND r.rubric_code = d.rubric_code;
|
||||
|
||||
INSERT INTO aihr_practice_rubric_dimension
|
||||
(tenant_id, rubric_code, dimension_code, dimension_name, weight, description, sort_order, create_time, update_time)
|
||||
SELECT r.tenant_id, r.rubric_code, d.dimension_code, d.dimension_name, d.weight, d.description, d.sort_order, NOW(), NOW()
|
||||
FROM aihr_brd_rubric_codes r
|
||||
JOIN (
|
||||
SELECT 'task_completion' AS dimension_code, '任务完成度' AS dimension_name, 0.40 AS weight, '问题解决有效性、工单闭环率、首解率、SOP关键点执行率' AS description, 10 AS sort_order
|
||||
UNION ALL SELECT 'standardization', '话术规范性', 0.25, '流程完整性、法规引用准确性、沟通合规、用语专业度', 20
|
||||
UNION ALL SELECT 'emotion', '情绪管理能力', 0.20, '共情、语速语气控制、业主情绪引导安抚有效性', 30
|
||||
UNION ALL SELECT 'response_timeliness', '响应时效', 0.10, '首响时长、处理周期、跟进频率', 40
|
||||
UNION ALL SELECT 'marketing', '增值转化潜力', 0.05, '活动引导、产品推介时机与成功率', 50
|
||||
) d;
|
||||
|
||||
DROP TEMPORARY TABLE IF EXISTS aihr_brd_rubric_codes;
|
||||
Reference in New Issue
Block a user