diff --git a/app/__init__.py b/app/__init__.py index 832205a..10e84e9 100644 --- a/app/__init__.py +++ b/app/__init__.py @@ -131,6 +131,29 @@ def create_app(): if "level" not in goal_columns: db.session.execute(text("ALTER TABLE goals ADD COLUMN level VARCHAR(20) DEFAULT '入门'")) db.session.commit() + + # 检查goals表是否有category字段 + if "category" not in goal_columns: + db.session.execute(text("ALTER TABLE goals ADD COLUMN category VARCHAR(20) DEFAULT '综合'")) + db.session.commit() + + # 迁移problems表分类:旧分类 -> 新分类 + # 技术类/技术类(手型)/技术类(生理限制) -> 演奏能力 + # 识谱类 -> 乐理相关 + # 综合类 -> 综合类 (保持不变) + # 其他 -> 其他 (保持不变) + category_mapping = { + '技术类': '演奏能力', + '技术类(手型)': '演奏能力', + '技术类(生理限制)': '演奏能力', + '识谱类': '乐理相关', + } + for old_cat, new_cat in category_mapping.items(): + db.session.execute( + text("UPDATE problems SET category = :new_cat WHERE category = :old_cat"), + {"new_cat": new_cat, "old_cat": old_cat} + ) + db.session.commit() except Exception as e: print(f"数据库迁移: {e}") diff --git a/app/models.py b/app/models.py index ae655f1..19ad9ad 100644 --- a/app/models.py +++ b/app/models.py @@ -6,6 +6,9 @@ import re db = SQLAlchemy() +# 问题和目标的统一分类体系 +ITEM_CATEGORIES = ['综合', '乐理相关', '演奏能力', '其他'] + class User(db.Model): """管理员用户表""" @@ -149,7 +152,7 @@ class Problem(db.Model): id = db.Column(db.Integer, primary_key=True) no = db.Column(db.String(10), unique=True, nullable=False) # 编号:01, 02... name = db.Column(db.String(100), nullable=False) # 问题名称 - category = db.Column(db.String(50), default="技术类") # 分类 + category = db.Column(db.String(20), default="综合") # 分类:综合/乐理相关/演奏能力/其他 content = db.Column(db.Text) # 问题详细内容 created_at = db.Column(db.DateTime, default=datetime.now) updated_at = db.Column(db.DateTime, default=datetime.now, onupdate=datetime.now) @@ -159,7 +162,7 @@ class Problem(db.Model): "id": self.id, "no": self.no, "name": self.name, - "category": self.category, + "category": self.category or "综合", } @@ -198,6 +201,7 @@ class Goal(db.Model): name = db.Column(db.String(100), nullable=False) content = db.Column(db.Text) level = db.Column(db.String(20), default="入门") # 启蒙/入门/进阶/熟练/精通 + category = db.Column(db.String(20), default="综合") # 分类:综合/乐理相关/演奏能力/其他 created_at = db.Column(db.DateTime, default=datetime.now) updated_at = db.Column(db.DateTime, default=datetime.now, onupdate=datetime.now) @@ -207,6 +211,7 @@ class Goal(db.Model): "name": self.name, "content": self.content, "level": self.level, + "category": self.category or "综合", "created_at": self.created_at.isoformat() if self.created_at else None, "updated_at": self.updated_at.isoformat() if self.updated_at else None, } diff --git a/app/routes/goals.py b/app/routes/goals.py index ffd93ca..bbdb416 100644 --- a/app/routes/goals.py +++ b/app/routes/goals.py @@ -25,7 +25,8 @@ def create_goal(): goal = Goal( name=data["name"], content=data.get("content", ""), - level=data.get("level", "入门") + level=data.get("level", "入门"), + category=data.get("category", "综合") ) db.session.add(goal) db.session.commit() @@ -48,6 +49,8 @@ def update_goal(goal_id): goal.content = data["content"] if "level" in data: goal.level = data["level"] + if "category" in data: + goal.category = data["category"] db.session.commit() return jsonify(goal.to_dict()) diff --git a/app/templates/goals.html b/app/templates/goals.html index 9713a31..dfa39e8 100644 --- a/app/templates/goals.html +++ b/app/templates/goals.html @@ -46,6 +46,15 @@ +