101 lines
4.2 KiB
SQL
101 lines
4.2 KiB
SQL
-- ============================================
|
||
-- 用户反馈表 - 用于存储用户对推荐操作的修改
|
||
-- ============================================
|
||
|
||
USE smart_home;
|
||
|
||
-- ============================================
|
||
-- 用户反馈记录表
|
||
-- ============================================
|
||
CREATE TABLE IF NOT EXISTS user_feedback (
|
||
id BIGINT NOT NULL COMMENT '主键ID',
|
||
system_user_id BIGINT NOT NULL COMMENT '系统用户ID',
|
||
created_at DATETIME COMMENT '创建时间',
|
||
context_id VARCHAR(100) COMMENT '会话上下文ID',
|
||
original_recommendation STRING COMMENT '原始推荐(JSON格式)',
|
||
user_modification STRING COMMENT '用户修改后的操作(JSON格式)',
|
||
scene_matched VARCHAR(100) COMMENT '匹配的场景',
|
||
time_period VARCHAR(20) COMMENT '时间段(早上/下午/晚上/夜晚)',
|
||
feedback_type VARCHAR(20) COMMENT '反馈类型:accepted, modified, rejected',
|
||
confidence_adjustment DOUBLE COMMENT '置信度调整值',
|
||
feedback_timestamp DATETIME COMMENT '用户反馈时间(5分钟窗口内)',
|
||
is_processed BOOLEAN COMMENT '是否已处理到训练数据',
|
||
metadata STRING COMMENT '元数据(JSON格式)'
|
||
) ENGINE=OLAP
|
||
DUPLICATE KEY(id, system_user_id, created_at)
|
||
DISTRIBUTED BY HASH(system_user_id) BUCKETS 10
|
||
PROPERTIES (
|
||
"replication_num" = "1"
|
||
);
|
||
|
||
-- ============================================
|
||
-- 设备操作置信度表(扩展原有 device_operations)
|
||
-- ============================================
|
||
CREATE TABLE IF NOT EXISTS device_operation_confidence (
|
||
id BIGINT NOT NULL COMMENT '主键ID',
|
||
operation_id BIGINT NOT NULL COMMENT '关联的 device_operations.id',
|
||
system_user_id BIGINT NOT NULL COMMENT '系统用户ID',
|
||
created_at DATETIME COMMENT '创建时间',
|
||
device_type VARCHAR(50) NOT NULL COMMENT '设备类型',
|
||
action VARCHAR(100) NOT NULL COMMENT '操作动作',
|
||
parameters STRING COMMENT '操作参数(JSON格式)',
|
||
confidence_score DOUBLE NOT NULL COMMENT '置信度分数(0-1)',
|
||
source VARCHAR(50) COMMENT '来源:gmm_prediction, user_feedback, historical_pattern',
|
||
scene_id INT COMMENT '所属场景ID',
|
||
is_user_modified BOOLEAN COMMENT '是否被用户修改过',
|
||
original_confidence DOUBLE COMMENT '原始置信度(修改前)',
|
||
adjustment_reason STRING COMMENT '调整原因'
|
||
) ENGINE=OLAP
|
||
DUPLICATE KEY(id, operation_id, system_user_id, created_at)
|
||
DISTRIBUTED BY HASH(system_user_id) BUCKETS 10
|
||
PROPERTIES (
|
||
"replication_num" = "1"
|
||
);
|
||
|
||
-- ============================================
|
||
-- 创建视图:结合反馈的增强数据集
|
||
-- ============================================
|
||
-- 先删除旧视图(如果存在)
|
||
DROP VIEW IF EXISTS enhanced_operations_view;
|
||
|
||
-- 创建新视图
|
||
CREATE VIEW enhanced_operations_view AS
|
||
SELECT
|
||
o.id,
|
||
o.system_user_id,
|
||
o.created_at,
|
||
o.context_id,
|
||
o.device_type,
|
||
o.device_name,
|
||
o.action,
|
||
o.parameters,
|
||
o.success,
|
||
COALESCE(c.confidence_score, 0.5) as confidence_score,
|
||
COALESCE(c.is_user_modified, FALSE) as is_user_modified,
|
||
COALESCE(c.source, 'historical') as confidence_source,
|
||
-- 时间特征(在数据库端计算)
|
||
HOUR(o.created_at) as hour,
|
||
MINUTE(o.created_at) as minute,
|
||
DAYOFWEEK(o.created_at) as day_of_week,
|
||
CASE WHEN DAYOFWEEK(o.created_at) IN (6, 7) THEN 1 ELSE 0 END as is_weekend,
|
||
CASE WHEN HOUR(o.created_at) >= 6 AND HOUR(o.created_at) < 12 THEN 1 ELSE 0 END as is_morning,
|
||
CASE WHEN HOUR(o.created_at) >= 12 AND HOUR(o.created_at) < 18 THEN 1 ELSE 0 END as is_afternoon,
|
||
CASE WHEN HOUR(o.created_at) >= 18 AND HOUR(o.created_at) < 22 THEN 1 ELSE 0 END as is_evening,
|
||
CASE WHEN HOUR(o.created_at) >= 22 OR HOUR(o.created_at) < 6 THEN 1 ELSE 0 END as is_night
|
||
FROM device_operations o
|
||
LEFT JOIN device_operation_confidence c ON o.id = c.operation_id
|
||
WHERE o.success = TRUE;
|
||
|
||
-- ============================================
|
||
-- 验证表创建
|
||
-- ============================================
|
||
SELECT '=== 用户反馈表 ===' AS info;
|
||
SHOW CREATE TABLE user_feedback;
|
||
|
||
SELECT '=== 置信度表 ===' AS info;
|
||
SHOW CREATE TABLE device_operation_confidence;
|
||
|
||
SELECT '=== 增强视图 ===' AS info;
|
||
SHOW CREATE VIEW enhanced_operations_view;
|
||
|