-- 学习分析系统数据库修复脚本
-- 修复 student_attempts 表的多个字段类型错误
-- 适用于 LearningAnalytics PostgreSQL 数据库
-- 运行时间: 2025-12-02

-- 连接数据库
-- psql -U rag_user -d learning_analytics

-- 1. 修改 ip_address 字段类型从 INET 改为 VARCHAR(64)
-- 原因：LearningAnalytics 服务传递的是字符串 IP，但数据库要求 INET 类型
-- 解决：统一使用 VARCHAR 类型，避免类型不匹配错误
ALTER TABLE student_attempts
ALTER COLUMN ip_address TYPE VARCHAR(64);

-- 2. 修改 partial_score 字段类型从 NUMERIC(5,4) 改为 NUMERIC(6,2)
-- 原因：原类型只能存储 -9.9999 到 9.9999，但实际分数可能达到 0-100
-- 解决：扩展为 NUMERIC(6,2)，支持 0-9999.99 的分数范围
ALTER TABLE student_attempts
ALTER COLUMN partial_score TYPE NUMERIC(6,2);

-- 3. 添加注释说明字段用途
COMMENT ON COLUMN student_attempts.ip_address IS '客户端IP地址，字符串格式';
COMMENT ON COLUMN student_attempts.partial_score IS '题目得分，保留2位小数，支持0-9999.99分';

-- 4. 验证修改
-- 查看修改后的字段类型
-- \d student_attempts | grep -E "ip_address|partial_score"

-- 输出成功消息
\echo ''
\echo '✓ 修复完成!'
\echo '  - ip_address: INET → VARCHAR(64)'
\echo '  - partial_score: NUMERIC(5,4) → NUMERIC(6,2)'
\echo ''

