重大改进: - 练习进度模型优化:从"每题一条记录"改为"每用户每类型一条记录",提升性能和数据管理 - 完全基于后端数据库恢复答题进度,移除 localStorage 依赖,提高可靠性 - AI评分结果持久化:在答题记录中保存AI评分、评语和建议,支持历史查看 后端改进: - 新增 /api/practice/progress 接口获取练习进度(支持按类型筛选) - 新增 /api/practice/progress 接口清除练习进度(支持按类型清除) - PracticeProgress 模型重构:添加 current_question_id 和 user_answer_records 字段 - UserAnswerRecord 模型增强:添加 ai_score、ai_feedback、ai_suggestion 字段 - 提交答案时自动保存AI评分到数据库 前端优化: - 答题进度完全从后端加载,移除 localStorage 备份逻辑 - 修复判断题答案格式转换问题(boolean -> string) - 优化随机模式:首次答题时随机选择起始题目 - 改进答题历史显示:显示答题序号和历史答案标识 - 已答题目切换时保持答案和结果显示状态 - 清除进度时支持按类型清除(而非清空所有) 技术优化: - 统一索引策略:从 idx_user_question 改为 idx_user_type - JSON 字段类型从 jsonp 改为 jsonb(PostgreSQL 性能优化) - 增加详细的日志记录,便于调试和追踪 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
19 lines
577 B
SQL
19 lines
577 B
SQL
-- 修复 practice_progress 表的唯一索引
|
|
-- 问题:之前的唯一索引只在 user_id 上,导致同一用户只能有一条进度记录
|
|
-- 修复:改为 (user_id, type) 联合唯一索引,允许同一用户有多种题型的进度
|
|
|
|
-- 1. 删除旧的唯一索引(如果存在)
|
|
DROP INDEX IF EXISTS idx_user_question;
|
|
|
|
-- 2. 创建新的联合唯一索引
|
|
CREATE UNIQUE INDEX IF NOT EXISTS idx_user_type ON practice_progress(user_id, type);
|
|
|
|
-- 3. 验证索引
|
|
SELECT
|
|
indexname,
|
|
indexdef
|
|
FROM
|
|
pg_indexes
|
|
WHERE
|
|
tablename = 'practice_progress';
|