diff --git a/app/models.py b/app/models.py index f9daa46..cd33ae7 100644 --- a/app/models.py +++ b/app/models.py @@ -190,6 +190,66 @@ class StudentProblem(db.Model): } +class Goal(db.Model): + """目标表""" + __tablename__ = "goals" + + id = db.Column(db.Integer, primary_key=True) + name = db.Column(db.String(100), nullable=False) + 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) + + def to_dict(self): + return { + "id": self.id, + "name": self.name, + "content": self.content, + "created_at": self.created_at.isoformat() if self.created_at else None, + "updated_at": self.updated_at.isoformat() if self.updated_at else None, + } + + +class GoalRelation(db.Model): + """目标关联表 - 自关联多对多""" + __tablename__ = "goal_relations" + + parent_goal_id = db.Column(db.Integer, db.ForeignKey("goals.id"), primary_key=True) + child_goal_id = db.Column(db.Integer, db.ForeignKey("goals.id"), primary_key=True) + + parent = db.relationship("Goal", foreign_keys=[parent_goal_id], backref="child_relations") + child = db.relationship("Goal", foreign_keys=[child_goal_id], backref="parent_relations") + + +class StudentGoal(db.Model): + """学员目标记录表""" + __tablename__ = "student_goals" + + id = db.Column(db.Integer, primary_key=True) + student_id = db.Column(db.Integer, db.ForeignKey("students.id"), nullable=False) + goal_id = db.Column(db.Integer, db.ForeignKey("goals.id"), nullable=False) + status = db.Column(db.String(20), default="未开始") # 未开始/进行中/已完成 + mastery_level = db.Column(db.Integer, default=1) # 1-5 + deadline = db.Column(db.DateTime) + completed_at = db.Column(db.DateTime) + created_at = db.Column(db.DateTime, default=datetime.now) + + student = db.relationship("Student", backref="goal_records") + goal = db.relationship("Goal") + + def to_dict(self): + return { + "id": self.id, + "student_id": self.student_id, + "goal_id": self.goal_id, + "goal_name": self.goal.name if self.goal else None, + "status": self.status, + "mastery_level": self.mastery_level, + "deadline": self.deadline.isoformat() if self.deadline else None, + "completed_at": self.completed_at.isoformat() if self.completed_at else None, + } + + class PracticePlan(db.Model): """练习方案表""" diff --git a/data/piano_plans.db.backup_20260422_221023 b/data/piano_plans.db.backup_20260422_221023 new file mode 100644 index 0000000..d3f941d Binary files /dev/null and b/data/piano_plans.db.backup_20260422_221023 differ diff --git a/data/problems_backup_20260422_231656/01_手小.md b/data/problems_backup_20260422_231656/01_手小.md new file mode 100644 index 0000000..8eaa243 --- /dev/null +++ b/data/problems_backup_20260422_231656/01_手小.md @@ -0,0 +1,120 @@ +# 手小 + +> 所属系列:钢琴学习常见问题针对性练习建议 +> 配合目标体系使用,针对性补齐短板 + +--- + +## 问题表现 + +- 八度跨度弹奏困难,手指伸张不开 +- 部分和弦够不到,需要过度撑开 +- 弹奏时手部扭曲,手腕酸痛 + +## 原因分析 + +- 生理结构限制(手掌大小、韧带柔韧性天生的) +- 缺乏针对性的手掌张开和扩展训练 + +## 核心解决方案 + +### 1. 手掌撑张训练 + +这不是"拉韧带",而是让手掌的张开能力得到发挥: +- 方法:双手合十,然后慢慢向两侧分开,感受手掌韧带的轻微拉伸感 +- 每天3-5分钟,不要过于用力 +- 配合热手(搓手或泡温水)效果更好 + +### 2. 指法优化 + +根据手的大小选择合适的指法: +- 使用收缩型指法(如1-2-3-1-2-3而非1-2-3-4-5) +- 八度双音可考虑用1-4指代替1-5指 +- 避免必须跨太大才能弹到的指法 + +### 3. 运用延音踏板 + +当手指无法保持连贯时,踏板可以"连接"声音: +- 在和弦转换时轻踩延音踏板 +- 让前一个和弦的声音延续到下一个 +- 注意不要让声音糊掉,踩放要干净 + +### 4. 音型拆分 + +无法一次弹完的音型可以拆分: +- 大跳的和弦可以分为两次弹(先低音后高音) +- 左右手分工也是一种办法 + +--- + +## 针对性练习方案 + +### 日常基础练习 + +| 练习名称 | 时长 | 频率 | 目的 | 适用级别 |适用严重程度 +|---------|------|------|------|---------|---------| +| 手掌撑张练习 | 5分钟 | 每天 | 扩展韧带弹性 | 启蒙/入门 |任何 +| 五指位练习 | 5-8分钟 | 每天 | 建立基础手型 | 启蒙 |任何 +| 简单琶音(收缩指法) | 5-10分钟 | 每天 | 琶音跨度 | 入门/进阶 |任何 +| 八度感知练习 | 5分钟 | 每天 | 感受舒适伸展范围 | 入门 |任何 +| 八度双音练习 | 10分钟 | 每天 | 注意手腕放松 | 进阶/熟练 |任何 +| 踏板延音练习 | 5分钟 | 每天 | 和弦衔接 | 进阶/熟练 |任何 + +### 具体操作 + +**练习1:手掌撑张练习** +- 适用级别:启蒙级、入门级 +- 动作:双手合十,慢慢向两侧分开,感受手掌韧带的轻微拉伸感 +- 时长:每天3-5分钟 +- 注意:不要过于用力,配合热手效果更好 + +**练习2:指法优化练习** +- 适用级别:进阶级、熟练级 +- 动作:琶音使用收缩型指法(1-2-3-1-2-3),八度双音用1-4指代替1-5指 +- 时长:每天10分钟 +- 注意:避免强制跨太大 + +--- + +## 练习提醒 + +### ⚠️ 禁忌 + +- 强行撑开手掌超过舒适范围 +- 手腕扭曲或塌陷 +- 连续练习时间过长不休息(不超过30分钟应休息) +- 手指酸痛时继续练习 + +### ✓ 正确做法 + +- 了解自己手的安全伸展范围 +- 选择适合自己手型的曲目 +- 遇到无法克服的段落可以考虑改编指法 +- 发展技术强项,规避生理限制 +- 善用踏板和指法弥补生理限制 + +--- + +## 评估标准 + +| 等级 | 标准 | +|------|------| +| 启蒙 | 能舒适弹奏C-G五度音程,手腕放松,不感到疼痛 | +| 入门 | 能舒适弹奏五度音程,手掌能基本撑开 | +| 进阶 | 能弹奏六度音程,掌握音断意连,踏板切换基本准确 | +| 熟练 | 能弹奏简单八度,善用踏板延伸音色,八度双音基本清晰 | +| 精通 | 能驾驭八度双音和简单和弦,手型稳定,踏板使用自然 | + +--- + +## 相关问题 + +- [[模板_针对性练习建议]] - 查看模板 +- [[02_识谱慢]] - 识谱能力影响手型认知 +- [[05_掌关节支撑差]] - 支撑能力影响跨度 + +--- + +> **版本**:V3.0 +> **创建时间**:2026-04-20 +> **更新说明**:根据知识库v3.0全面重写,增加分级练习方案 \ No newline at end of file diff --git a/data/problems_backup_20260422_231656/02_识谱慢.md b/data/problems_backup_20260422_231656/02_识谱慢.md new file mode 100644 index 0000000..f7f6d28 --- /dev/null +++ b/data/problems_backup_20260422_231656/02_识谱慢.md @@ -0,0 +1,162 @@ +# 识谱慢 + +> 所属系列:钢琴学习常见问题针对性练习建议 +> 配合目标体系使用,针对性补齐短板 + +--- + +## 问题表现 + +- 看一个音符需要花好几秒 +- 看谱时找不到琴键位置,弹错音 +- 只能单手看谱,双手合手困难 +- 经常要看同一个音好几次 +- 视奏时频繁停顿 +- 跟不上节拍 + +## 原因分析 + +### 1. 音符位置记忆方式错误 + +很多学生用"数线法":从中央C开始一个一个格子往上数,这种方法在简单曲目时尚可应付,一旦遇到加线多的音符或快速乐句就完全失效。 + +正确的方法是建立"音程思维":看到两个音符要知道它们之间差几度,而不是一个一个去数。 + +### 2. 眼睛和手没有形成联动 + +眼睛看到音符后,需要传递给大脑,大脑再指挥手指去弹。如果这个链条太长,反应自然就慢。 + +### 3. 同时处理太多信息 + +视奏时需要同时处理:音高、节奏、指法、力度等。大脑容量有限,初学者经常顾此失彼。 + +### 4. 缺乏视奏专项训练 + +很多学生只练"弹过的曲子",从来不练"第一次看到的曲子"。识谱是一项需要专门训练的技能。 + +### 5. 对键盘位置不熟悉 + +即使能认出音符,也不知道它在哪个琴键上。 + +--- + +## 核心解决方案 + +### 1. 建立音程直觉 + +不逐个认音,而是一眼看出两个音之间的"距离": + +- 相邻的线与间是二度(如do-re) +- 相邻的线与线或间与间是三度(如do-mi) +- 隔一个的线与线或间与间是五度(如do-sol) +- 隔两个的线与线或间与间是七度(do-si) + +训练方法:随便在五线谱上画两个音,立刻说出音程。 + +### 2. 双手分工视奏 + +不要一开始就想双手一起弹: + +- 先单手分别练熟 +- 眼睛看着谱,手在琴键上找位置 +- 建立"看到这个音就想到那个键"的直接反射 + +### 3. 节奏先行 + +拿到新谱时: + +1. 先用节拍器打一遍节奏(不弹音高) +2. 确认节奏对了再加音高 +3. 节奏对了,音乐就对了70% + +### 4. 读谱不弹练习 + +每天花5-10分钟,纯读谱不弹琴: + +- 看着五线谱说出音名 +- 不需要出声,心里默唱也行 +- 训练眼睛对五线谱的反应速度 + +### 5. 分组记忆 + +不要一个音一个音记,而是按组记: + +- 一个和弦 = 一组音符 +- 一个小节 = 一组音符 +- 一个乐句 = 一组音符 +--- + +## 针对性练习方案 + +### 日常基础练习 + +| 练习名称 | 时长 | 频率 | 目的 | 适用级别 | 适用问题严重程度 +|---------|------|------|------|---------|---------| +| 音程练习 | 5分钟 | 每天 | 建立音程直觉 | 启蒙/入门 | 严重 +| 纯读谱练习 | 5分钟 | 每天 | 训练反应速度 | 启蒙/入门 |任何 +| 单手视奏 | 10分钟 | 每天 | 先单手后双手 | 启蒙/入门 |严重 +| 节奏打拍 | 5-10分钟 | 每天 | 节奏先行 | 入门/进阶 |任何 +| 新谱视奏 | 10分钟 | 每天 | 第一次看就弹 | 入门/进阶 |任何 +| 乐句分组 | 5分钟 | 每天 | 按句记不按音记 | 入门/进阶 |任何 +| 限时视奏 | 5分钟 | 每天 | 计时读谱 | 进阶 |任何 +| 24调视奏 | 10分钟 | 每天 | 各个调都练到 | 熟练/精通 |任何 + +### 具体操作 + +**练习1:音程练习** +- 适用级别:启蒙级、入门级 +- 动作:在五线谱上随便画两个音,立刻说出音程 +- 时长:每天5分钟 + +**练习2:节奏先行练习** +- 适用级别:入门级、进阶级 +- 动作:拿到新谱先用节拍器打一遍节奏,不弹音高 +- 时长:每天5-10分钟 + +**练习3: 视奏练习** +- 适用级别:进阶级、熟练级 +- 动作:拿到新谱时花30秒读谱:调性、节拍、节奏、音高、临时记号 +- 时长:每次视奏前 +--- +## 练习提醒 + +### ⚠️ 禁忌 + +- 边看键盘边弹(形成依赖) +- 标注简谱(永远学不会五线谱) +- 弹错就停(破坏连贯性) +- 同一首曲子反复练太多遍(不是在练识谱) + +### ✓ 正确做法 + +- 眼睛看谱,手看键只是偶尔确认 +- 每天练从未弹过的曲子 +- "宁可慢,不要断" +- 把识谱当作独立技能专项训练 + +--- + +## 评估标准 + +| 等级 | 标准 | +|------|------| +| 启蒙 | 能认识五线谱音符的基本形态,知道线和间的概念 | +| 入门 | 高低音谱表能识别中央C附近一个八度,能在琴键上找到对应位置 | +| 进阶 | 能独立视奏简单旋律,10秒内读出音符,节奏基本稳定 | +| 熟练 | 能独立视奏新曲目,准确率80%以上,双手分工看谱 | +| 精通 | 能进行较复杂视奏,24个大小调基本能弹 | + +--- + +## 相关问题 + +- [[模板_针对性练习建议]] - 查看模板 +- [[01_手小]] - 手小影响视奏时的键盘位置感知 +- [[03_节奏感差]] - 节奏感知影响视奏 +- [[12_不会用节拍器]] - 节拍器帮助节奏稳定 + +--- + +> **版本**:V3.0 +> **创建时间**:2026-04-20 +> **更新说明**:根据知识库v3.0全面重写,增加STARS预读法 \ No newline at end of file diff --git a/data/problems_backup_20260422_231656/03_节奏感差.md b/data/problems_backup_20260422_231656/03_节奏感差.md new file mode 100644 index 0000000..4915653 --- /dev/null +++ b/data/problems_backup_20260422_231656/03_节奏感差.md @@ -0,0 +1,146 @@ +# 节奏感差 + +> 所属系列:钢琴学习常见问题针对性练习建议 +> 配合目标体系使用,针对性补齐短板 + +--- + +## 问题表现 + +- 演奏时快时慢,不稳定 +- 打拍子会乱,不知道音符该弹多长 +- 复杂节奏型(附点,切分,三连音)掌握困难 +- 弹奏缺乏律动感 + +## 原因分析 + +### 1. 内心节拍器没有建立 + +很多学生依赖外部节拍器,关掉节拍器就不知道该弹多快。真正的高手内心有一个稳定的"隐形节拍器"。 + +### 2. 对音符时值理解不清 + +不知道四分音符和八分音符的时值比例,附点该弹多长,切分该怎么算。 + +### 3. 身体没有参与 + +节奏不仅是大脑的事,更是身体的事。只用脑子记节奏,不动手不动脚,效果很差。 + +### 4. 练习方法问题 + +从不开节拍器练习,或者开着节拍器但完全不跟着走。 + +### 5. 心理紧张 + +一上台或一录音就紧张,节奏更加不稳定。 + +--- + +## 核心解决方案 + +### 1. 建立内心节拍器 + +**第一步:节拍器感知** +- 从60速开始,仔细听节拍器的"滴答"声 +- 跟着节拍器轻轻点头或踏脚 + +**第二步:内心默数** +- 关掉节拍器,心里默数"1-2-3-4" +- 速度与60速一致 +- 用脚轻轻动一下对应每拍 + +**第三步:脱节拍器验证** +- 用节拍器练熟后,关闭节拍器弹同样的速度 +- 过30秒后重新开启节拍器验证是否还在原速 + +### 2. 身体参与节奏感知 + +**拍手训练:** +- 只拍手不弹琴,拍手时大声数"1-2-3-4" +- 各种节奏型用拍手来感受 + +**脚打拍子:** +- 脚是身体最稳定的节拍器 +- 弹琴时用脚保持基础节奏 + +### 3. 先节奏后音高 +步骤: +1. 看谱,用手拍出所有音符的节奏(不弹) +2. 边拍边数:1-2-3-4 +3. 节奏完全正确后再上琴弹奏 +--- +## 针对性练习方案 + +### 日常基础练习 + +| 练习名称 | 时长 | 频率 | 目的 | 适用级别 |适用严重程度 +|---------|------|------|------|---------|---------| +| 节拍器感知(60速) | 10分钟 | 每天 | 感受稳定节拍 | 启蒙/入门 |任何 +| 纯节奏拍手 | 5分钟 | 每天 | 节奏感知 | 启蒙/入门 |任何 +| 脚打拍子 | 5分钟 | 每天 | 身体参与 | 启蒙/入门 |任何 +| 内心节拍器训练 | 10分钟 | 每天 | 脱离外部节拍器 | 入门/进阶 |任何 +| 节奏型专项 | 10分钟 | 每天 | 附点,切分等 | 入门/进阶 |任何 +| 录音回放自检 | 5分钟 | 每天 | 发现节奏问题 | 入门/进阶 |任何 +| 复合节奏 | 10分钟 | 每天 | 左右手不同节奏 | 进阶/熟练 |任何 + +### 具体操作 + +**练习1:节拍器感知练习** +- 适用级别:启蒙级,入门级 +- 动作:从60速开始,跟随节拍器轻轻点头或踏脚 +- 时长:每天10分钟 + +**练习2:纯节奏拍手练习** +- 适用级别:启蒙级,入门级 +- 动作:只拍手不弹琴,拍手时大声数"1-2-3-4" +- 时长:每天5分钟 + +**练习3:先节奏后音高练习** +- 适用级别:入门级、进阶级 +- 动作:看谱,用手拍出所有音符的节奏,节奏完全正确后再上琴 +- 时长:每天10分钟 + +--- + +## 练习提醒 + +### ⚠️ 禁忌 + +- 开着节拍器但弹得忽快忽慢 +- 只练音符不练节奏 +- 弹错就停,不继续往下 +- 身体不参与节奏感知 +- 不录音回放 + +### ✓ 正确做法 + +- 每天花5分钟纯节奏练习(不弹琴) +- 录音回放,听自己的节奏是否稳定 +- 用脚打拍子 +- 先打节奏再上琴 + +--- + +## 评估标准 + +| 等级 | 标准 | +|------|------| +| 启蒙 | 能用手打稳定4/4拍,知道强拍位置 | +| 入门 | 能用手打拍子,4/4拍稳定,会数拍 | +| 进阶 | 简单曲目节奏准确(四分、八分音符) | +| 熟练 | 掌握附点节奏、切分音,能跟伴奏 | +| 精通 | 三连音、复合节奏处理,节奏稳定自如 | + +--- + +## 相关问题 + +- [[模板_针对性练习建议]] - 查看模板 +- [[01_手小]] - 手小可能影响节奏控制 +- [[12_不会用节拍器]] - 节拍器辅助节奏训练 + +--- + +> **版本**:V3.0 +> **创建时间**:2026-04-20 +> **更新说明**:根据知识库v3.0全面重写,增加内心节拍器训练方法 \ No newline at end of file diff --git a/data/problems_backup_20260422_231656/04_压手腕.md b/data/problems_backup_20260422_231656/04_压手腕.md new file mode 100644 index 0000000..8a39fa7 --- /dev/null +++ b/data/problems_backup_20260422_231656/04_压手腕.md @@ -0,0 +1,152 @@ +# 压手腕 + +> 所属系列:钢琴学习常见问题针对性练习建议 +> 配合目标体系使用,针对性补齐短板 + +--- + +## 问题表现 + +- 手腕明显低于琴键平面 +- 手腕呈现下塌的弧线 +- 力量传递受阻,声音发闷 +- 手腕酸痛或疲劳 +- 弹奏时手腕上下晃动 + +## 原因分析 + +### 1. 手指支撑能力不足 + +当手指无法独立支撑时,手腕会不自觉地"帮忙",导致下压。 + +### 2. 误解了"用力弹" + +误以为弹琴需要用很大力气,手臂往下压。 + +### 3. 手腕肌肉紧张 + +手腕周围的肌肉过于紧绷,无法放松,导致动作僵硬。 + +### 4. 缺乏手腕调节意识 + +不知道手腕应该保持灵活,可以轻微调节高度。 + +### 5. 肩臂过于紧张 + +从肩膀到手臂都太紧,力量淤积在手腕处。 + +--- + +## 核心解决方案 + +### 1. 手腕位置意识 + +建立正确的手腕位置感: + +- 手腕应该与键盘、小臂平行即可。 +- 不低于键盘,不高于手掌。 +- 可以把手背放一枚硬币,弹奏时硬币不应掉落 + +### 2. 手指独立练习 + +通过断奏训练手指的独立支撑能力: + +- 每个手指单独在琴键上站立 +- 其他手指放松,不要帮忙 +- 感受力量从手指传递而不是从手腕压下 + +### 3. 手臂重量弹奏法 + +不要用手臂往下压,而是让手臂重量自然落到指尖: + +- 想象手臂是钟摆,自然摆动 +- 手指"接住"手臂的重量 +- 手腕保持灵活,不是固定死的 + +### 4. 手腕放松画圈 + +不弹琴时练习: + +- 手腕完全放松 +- 轻轻画圈,活动手腕关节 +- 感受手腕可以自由活动的范围 + +### 5. 断奏过渡到连奏 + +先通过断奏建立正确的手腕位置: + +- 断奏时每个音弹完手腕稍微抬起 +- 逐渐过渡到连奏,保持手腕位置稳定 + +--- + +## 针对性练习方案 + +### 日常基础练习 + +| 练习名称 | 时长 | 频率 | 目的 | 适用级别 |适用严重程度 +|---------|------|------|------|---------|---------| +| 手指站立断奏 | 10分钟 | 每天 | 手指独立支撑 | 启蒙/入门 |任何 +| 手腕放松画圈 | 5分钟 | 每天 | 放松关节 | 启蒙/入门 |任何 +| 手臂重量弹奏 | 10分钟 | 每天 | 感受重量传递 | 入门/进阶 |任何 +| 断奏过渡到连奏 | 10分钟 | 每天 | 保持位置稳定 | 入门/进阶 |任何 + +### 具体操作 + +**练习1:手腕位置意识练习** +- 适用级别:启蒙级,入门级 +- 动作:把手背放一枚硬币,手腕略高于手背,弹奏时硬币不应掉落 +- 时长:每天5分钟 + +**练习2:手指独立断奏** +- 适用级别:启蒙级,入门级 +- 动作:每个手指单独在琴键上站立,其他手指放松 +- 时长:每天10分钟 + +**练习3:手臂重量弹奏** +- 适用级别:入门级、进阶级 +- 动作:想象手臂是钟摆,手指"接住"手臂的重量 +- 时长:每天10分钟 + +--- + +## 练习提醒 + +### ⚠️ 禁忌 + +- 手腕塌陷用力压键 +- 手腕完全不动,像铁板一样 +- 手腕随着弹奏上下晃动 +- 手型还没建立就追求速度 + +### ✓ 正确做法 + +- 每次练习前做手腕热身 +- 慢速感受自然重量,手腕放松 +- 想象手臂重量传递到指尖 + +--- + +## 评估标准 + +| 等级 | 标准 | +|------|------| +| 启蒙 | 手腕基本水平,无明显塌陷 | +| 入门 | 断奏时手腕保持稳定高度 | +| 进阶 | 连奏时手腕基本水平,无下压 | +| 熟练 | 快速跑动时手腕仍保持弹性 | +| 精通 | 手腕灵活有力,配合手指完成各种音色 | + +--- + +## 相关问题 + +- [[模板_针对性练习建议]] - 查看模板 +- [[05_掌关节支撑差]] - 掌关节影响手腕位置 +- [[08_手指僵硬_紧张]] - 紧张会加重手腕问题 + +--- + +> **版本**:V3.0 +> **创建时间**:2026-04-20 +> **更新说明**:根据知识库v3.0全面重写,增加手腕调节意识训练 \ No newline at end of file diff --git a/data/problems_backup_20260422_231656/05_掌关节支撑差.md b/data/problems_backup_20260422_231656/05_掌关节支撑差.md new file mode 100644 index 0000000..993d98c --- /dev/null +++ b/data/problems_backup_20260422_231656/05_掌关节支撑差.md @@ -0,0 +1,151 @@ +# 掌关节支撑差 + +> 所属系列:钢琴学习常见问题针对性练习建议 +> 配合目标体系使用,针对性补齐短板 + +--- + +## 问题表现 + +- 掌关节塌陷,拱不起来 +- 触键时手型扁平 +- 力量无法集中传递到指尖 +- 声音松散不集中 +- 手型缺乏支撑感 + +## 原因分析 + +### 1. 手部肌肉力量不足 + +低龄学生或未经训练的学生,手掌肌肉力量不足,难以支撑手型。 + +### 2. 手指站立概念不清 + +不知道手指应该在琴键上"站住",而是"躺"在琴键上。 + +### 3. 手掌没有参与 + +只有手指用力,手掌完全放松塌陷,没有形成稳定的支撑框架。 + +### 4. 练习方法问题 + +缺乏专门的手型支撑训练,过早追求速度和曲目。 + +### 5. 手腕位置影响 + +手腕过低导致手掌被迫塌陷。 + +--- + +## 核心解决方案 + +### 1. 手掌撑墙练习 + +- 手掌撑在墙上,手指微微弯曲 +- 感受掌关节向上拱起的力量 +- 保持5-10秒,每天练习 + +### 2. 音束训练 + +- 234指在三个音为一组的黑琴键上 +- 贴键 +- 其他手指放松不参与 +- 每个音束保持3-5秒 + +### 3. 手指站立训练 + +- 每个手指单独在琴键上站立 +- 掌关节向上拱起支撑 +- 其他手指放松不参与 +- 每个手指站立保持3-5秒 + +### 4. 吊臂练习 + +- 手臂抬起,手掌悬空 +- 感受手臂重量自然传递到指尖 +- 掌关节在这个过程中形成自然拱度 + +### 5. 断奏建立支撑 + +通过断奏练习建立掌关节支撑: + +- 每个音弹完,手指不完全离开琴键 +- 保持支撑感,不让掌关节塌陷 +- 逐渐加快速度但保持支撑 + +--- + +## 针对性练习方案 + +### 日常基础练习 + +| 练习名称 | 时长 | 频率 | 目的 | 适用级别 |适用严重程度| +|---------|------|------|------|---------|---------| +| 手掌撑墙 | 5分钟 | 每天 | 感受支撑 | 启蒙/入门 |任何| +| 音束练习 | 10分钟 | 每天 | 感受支撑 | 启蒙/入门 |任何| +| 手指站立 | 19分钟 | 每天 | 手指独立 | 启蒙/入门 |任何| +| 吊臂练习 | 5分钟 | 每次练习前 | 感受重量传递 | 入门/进阶 |任何| +| 断奏支撑 | 10分钟 | 每天 | 手指独立 | 入门/进阶 |任何| +| 渐强渐弱练习 | 10分钟 | 每天 | 从弱到强保持支撑 | 进阶/熟练 |任何| +| 快速弹奏 | 10分钟 | 每天 | 保持手型不塌 | 进阶/熟练 |任何| +| 和弦弹奏 | 10分钟 | 每天 | 掌关节支撑每个音 | 进阶/熟练 |任何| + +### 具体操作 + +**练习1:手掌撑墙练习** +- 适用级别:启蒙级,入门级 +- 动作:手掌撑在墙上,手指微微弯曲,感受掌关节向上拱起 +- 时长:每天5分钟 + +**练习2:音束训练** +- 适用级别:启蒙级,入门级 +- 动作:234在三个音为一组的黑键上 +- 时长:每天5-10分钟 + +**练习3:手指站立训练** +- 适用级别:启蒙级,入门级 +- 动作:每个手指单独在琴键上站立,掌关节向上拱起 +- 时长:每天10分钟 +--- + +## 练习提醒 + +### ⚠️ 禁忌 + +- 手掌完全塌陷贴琴键 +- 手指软绵绵没有力量 +- 手型时好时坏不稳定 +- 掌关节塌陷还继续用力弹 + +### ✓ 正确做法 + +- 每天专门练习手型支撑 +- 练习时关注手型 +- 感觉支撑疲劳时适当休息 + +--- + +## 评估标准 + +| 等级 | 标准 | +|------|------| +| 启蒙 | 静止时能保持基本拱形手型 | +| 入门 | 断奏时掌关节不塌陷 | +| 进阶 | 慢速连奏时手型基本稳定 | +| 熟练 | 快速弹奏时仍保持支撑 | +| 精通 | 手型饱满有弹性,声音集中有力 | + +--- + +## 相关问题 + +- [[模板_针对性练习建议]] - 查看模板 +- [[01_手小]] - 手小可能加重支撑问题 +- [[04_压手腕]] - 手腕位置影响掌关节 +- [[06_第一关节支撑差]] - 第一关节与掌关节联动 + +--- + +> **版本**:V3.0 +> **创建时间**:2026-04-20 +> **更新说明**:根据知识库v3.0全面重写 \ No newline at end of file diff --git a/data/problems_backup_20260422_231656/06_第一关节支撑差.md b/data/problems_backup_20260422_231656/06_第一关节支撑差.md new file mode 100644 index 0000000..3d8bfb5 --- /dev/null +++ b/data/problems_backup_20260422_231656/06_第一关节支撑差.md @@ -0,0 +1,128 @@ +# 第一关节支撑差 + +> 所属系列:钢琴学习常见问题针对性练习建议 +> 配合目标体系使用,针对性补齐短板 + +--- + +## 问题表现 + +- 第一关节弯曲(折指) +- 指尖发软,立不住 +- 触键声音发虚 +- 手指容易疲劳酸痛 +- 长时间弹奏后指尖塌陷 + +## 原因分析 + +### 1. 手指力量不足 + +第一关节周围的肌肉和韧带力量不足以支撑触键时的压力。 + +### 2. 触键角度错误 + +手指过于躺平,而不是微微弯曲向下。 + +### 3. 指甲问题 + +指甲过长导致触键点偏移,无法用指尖触键。 + +### 4. 整体手型问题 + +其他部位(掌关节,手腕)的问题也会传递到第一关节。 + +--- + +## 核心解决方案 + +### 1. 指尖站立练习 + +- 手指自然弯曲,第一关节向外微微拱起 +- 像小柱子一样站立在琴键上 +- 保持3-5秒,感受支撑感 + +### 2. 贴键练习 + +- 手指贴在琴键上 +- 缓慢下键,感受第一关节的支撑 +- 建立触键的支撑能力 + + +### 3. 触键点调整 + +- 触键点在指尖最末端 +- 具体操作可观看艺超音乐培训视频号“看三遍,三分钟,学琴不跑偏”系列视频之《触键点与支撑》 + + +--- + +## 针对性练习方案 + +### 日常基础练习 + +| 练习名称 | 时长 | 频率 | 目的 | 适用级别 |适用严重程度 +|---------|------|------|------|---------|---------| +| 指尖站立 | 5分钟 | 每天 | 每个手指立住 | 启蒙/入门 |任何 +| 贴键慢下键 | 10分钟 | 每天 | 低触键支撑 | 启蒙/入门 |任何 +| 触键点感知 | 5分钟 | 每天 | 找准指腹位置 | 启蒙/入门 |任何 +| 断奏支撑 | 10分钟 | 每天 | 练习单指支撑 | 入门/进阶 |任何 +| 力度变化 | 10分钟 | 每天 | 从轻到重保持支撑 | 进阶/熟练 |任何 + +### 具体操作 + +**练习1:指尖站立练习** +- 适用级别:启蒙级,入门级 +- 动作:手指自然弯曲,第一关节向外微微拱起,像小柱子一样站立在琴键上 +- 时长:每天5分钟 + +**练习2:贴键慢下键** +- 适用级别:启蒙级,入门级 +- 动作:手指贴在琴键上,缓慢下键,感受第一关节的支撑 +- 时长:每天10分钟 + +--- + +## 练习提醒 + +### ⚠️ 禁忌 + +- 指甲过长(超过指腹) +- 用指尖代替指腹触键 +- 手指过于伸直 +- 折指还继续弹 + +### ✓ 正确做法 + +- 定期修剪指甲 +- 触键时第一关节保持微弯 +- 用指尖最前端触键 +- 感觉疲劳时及时放松 + +--- + +## 评估标准 + +| 等级 | 标准 | +|------|------| +| 启蒙 | 静止时第一关节不弯曲 | +| 入门 | 断奏时指尖能立住 | +| 进阶 | 慢速连奏时指尖基本稳定 | +| 熟练 | 中快速弹奏时保持指尖支撑 | +| 精通 | 指尖有力,声音清晰集中 | + +--- + +## 相关问题 + +- [[模板_针对性练习建议]] - 查看模板 +- [[05_掌关节支撑差]] - 掌关节影响第一关节 +- [[04_压手腕]] - 手腕位置影响指尖 +- [[08_手指僵硬_紧张]] - 紧张加重折指问题 + +--- + +> **版本**:V3.0 +> **创建时间**:2026-04-20 +> **更新说明**:根据知识库v3.0全面重写,增加指尖叩击等弹性训练 + +--- \ No newline at end of file diff --git a/data/problems_backup_20260422_231656/07_对键盘不熟悉.md b/data/problems_backup_20260422_231656/07_对键盘不熟悉.md new file mode 100644 index 0000000..3e545e9 --- /dev/null +++ b/data/problems_backup_20260422_231656/07_对键盘不熟悉.md @@ -0,0 +1,140 @@ +# 对键盘不熟悉 + +> 所属系列:钢琴学习常见问题针对性练习建议 +> 配合目标体系使用,针对性补齐短板 + +--- + +## 问题表现 + +- 找不到琴键位置,弹奏时经常"找"键 +- 识谱和弹奏无法同时进行 +- 弹错音后不知道在哪,需要看键盘 +- 对琴键的排列规律没有概念 + +## 原因分析 + +- 练习量不足,肌肉记忆未形成 +- 练习时过度依赖视觉,忽视触觉记忆 +- 缺乏键盘布局的系统性认知 + +## 核心解决方案 + +### 1. 盲弹训练 + +看谱不看手,建立触觉记忆: +- 先看谱看键盘,弹一个音 +- 记住这个音的位置,闭眼弹 +- 逐步过渡到:看谱 → 闭眼弹 → 睁眼确认 +- 目标:简单曲目(没有手位变化)只看谱弹奏 + +### 2. 键盘位置记忆 + +记住中央C的位置,相邻琴键的关系: +- 中央C位于两组黑键的左边第一个白键 +- 用这个"锚点"确定其他音的位置 +- 训练:闭眼摸到中央C + +### 3. 基准键定位 + +双手食指在中央C两侧的位置: +- 左手食指在中央C左边的白键 +- 右手食指在中央C右边的白键 + +--- + +## 针对性练习方案 + +### 日常基础练习 + +| 练习名称 | 时长 | 频率 | 目的 | 适用级别 |适用严重程度| +|---------|------|------|------|---------|---------| +| 中央C定位 | 5分钟 | 每天 | 建立键盘锚点 | 启蒙/入门 |严重| +| 黑键位置记忆 | 5分钟 | 每天 | 建立键盘布局认知 | 启蒙/入门 |中等 +| 盲弹练习 | 10分钟 | 每天 | 建立触觉记忆 | 入门/进阶 |中等 +| 音阶位移练习 | 10分钟 | 每天 | 熟悉各调键盘位置 | 精通 |轻微 + +### 具体操作 + +**练习1:Do定位** +- 适用级别:启蒙级、入门级 +- Do位于两组三个黑键的左边第一个白键 +- 用这个"锚点"确定其他音的位置 +- 训练:闭眼摸到中央Do + + +**练习2:键盘布局认知** +- 适用级别:启蒙级、入门级 +- 认识黑键规律:两个一组、三个一组 +- C大调:C是白键,D是白键,中间夹着黑键 +- 记住:黑键前面的白键是B +- 白键规律:全全半全全全半(音阶排列) + +**练习3:盲弹训练** +- 适用级别:入门级、进阶级 +- 先看谱看键盘,弹一个音 +- 记住这个音的位置,闭眼弹 +- 逐步过渡到:看谱 → 闭眼弹 → 睁眼确认 +- 目标:简单曲目(没有手位变化)只看谱弹奏 + +**练习4:键盘位移(横向移动)** +- 适用级别:入门级、进阶级 +- 从中央C开始,弹一个八度 +- 移高八度,再弹一个八度 +- 感受不同八度之间的音高差异 +- 训练对整体键盘的感知 + + +### 键盘位置记忆口诀 + +``` +白键顺序:C-D-E-F-G-A-B(Do-Re-Mi-Fa-Sol-La-Si) +黑键规律:两个一组、三个一组 +C找法:两个一组黑键的左边第一个白键 +F找法:三个一组黑键的左边第一个白键 +``` + +--- + +## 练习提醒 + +### ⚠️ 禁忌 + +- 不看谱 +- 手位没有变化时看键盘 +- 依赖视觉而不是触觉记忆 + +### ✓ 正确做法 + +- 建立"肌肉记忆" +- 每天花10分钟练习识谱;视奏。 +- 记住键盘的规律,熟悉键盘 + +--- + +## 评估标准 + +| 等级 | 标准 | +|------|------| +| 启蒙 | 知道C的位置,能不看键盘找到 | +| 入门 | 能找到中央C和基本音区 | +| 进阶 | 能不看键盘弹奏简单旋律 | +| 熟练 | 双手配合时能准确找到琴键 | +| 精通 | 能在键盘上自由移动,快速定位 | + +--- + +## 相关问题 + +- [[06_第一关节支撑差]] - 上一个问题 +- [[08_手指僵硬_紧张]] - 下一个问题 +- [[模板_针对性练习建议]] - 查看模板 +- [[针对性练习建议_汇总版]] - 查看完整合集 + +--- + +> **版本**:V2.0 +> **创建时间**:2026-04-17 +> **更新时间**:2026-04-19 +> **适用场景**:成人钢琴集体课学员个性化辅导 +> **更新说明**:增加启蒙级评估标准,增加适用级别列,调整为识谱类 \ No newline at end of file diff --git a/data/problems_backup_20260422_231656/08_手指僵硬_紧张.md b/data/problems_backup_20260422_231656/08_手指僵硬_紧张.md new file mode 100644 index 0000000..941ebd3 --- /dev/null +++ b/data/problems_backup_20260422_231656/08_手指僵硬_紧张.md @@ -0,0 +1,168 @@ +# 手指僵硬、紧张 + +> 所属系列:钢琴学习常见问题针对性练习建议 +> 配合目标体系使用,针对性补齐短板 + +--- + +## 问题表现 + +- 弹奏时手指伸直,无法弯曲 +- 手腕、手臂僵硬,弹奏不灵活 +- 弹久了手酸、手疼 +- 音色死板,缺乏音乐性 + +## 原因分析 + +- 紧张情绪导致的肌肉僵硬 +- 错误的手型(手型过紧或过松) +- 练习方法不当,过度用力 + +## 核心解决方案 + +### 1. 放松练习 + +弹奏前先放松手部,感受重力: +- 手自然垂下,感受手臂的重量 +- 肩膀下沉,不耸起 +- 想象手是"挂在"手臂上的 + +### 2. 手腕调节 + +手腕保持灵活,不僵硬: +- 手腕是手臂和手指之间的缓冲 +- 不要把手腕锁死 +- 感受手腕的微小调节 + +### 3. 非连奏训练 + +非连音弹奏,感受手指的弹性: +- 每个音都断开 +- 手腕带一点"提起来"的动作 +- 感受手指的弹性,而非用力压键 + +--- + +## 针对性练习方案 + +### 日常基础练习 + +| 练习名称 | 时长 | 频率 | 目的 | 适用级别 |适用严重程度 +|---------|------|------|------|---------|---------| +| 手部放松操 | 3分钟 | 每次练习前 | 放松手部肌肉 | 启蒙/入门 |任何 +| 贴键练习 | 5分钟 | 每天 | 感受放松 | 启蒙/入门 |任何 +| 呼吸放松法 | 2分钟 | 每次练习前 | 缓解紧张情绪 | 启蒙/入门 |任何 +| 断奏训练 | 5分钟 | 每天 | 感受手指支撑 | 入门/进阶 |任何 +| 重量弹奏法 | 5分钟 | 每天 | 利用手臂重量 | 入门/进阶 |任何 + +### 具体操作 + +**练习1:手部放松操** +- 适用级别:启蒙级、入门级 +- 甩手:自然下垂,快速甩动30秒 +- 握拳:用力握紧 → 快速松开,重复10次 +- 手指展开:五指张开 → 握拳,重复10次 +- 揉手腕:轻轻揉捏手腕周围肌肉 + +**练习2:贴键练习** +- 适用级别:启蒙级、入门级 +- 手指轻轻放在琴键上,不需要太用力 +- 贴键 +- 感受琴键的重量,用自然力量下键 +- 目标:用最小的力量发出声音 + +**练习3:呼吸放松法** +- 适用级别:启蒙级、入门级 +- 弹奏前深呼吸3次 +- 肩膀下沉,不要耸肩膀 +- 手臂自然下垂,完全放松 +- 心里默念"放松"再开始弹 + +**练习4:断奏练习** +- 适用级别:入门级、进阶级 +- 每个音都断开,手腕带一点"提起来"的动作 +- 弹完一个音,手腕稍微抬起,再弹下一个 +- 感受手指的支撑,而非用手腕把声音压出来 + +**练习5:重量弹奏法** +- 适用级别:入门级、进阶级 +- 感受手臂的重量自然传递到指尖 +- 手指不是"敲"下去,而是"放"下去 +- 利用手臂重量而非手指力量下键 +- 音色更深厚,手指更轻松 + +### 心理放松技巧 + +``` +紧张时的自我调节: +1. 心理暗示:告诉自己"我能行" +2. 拆解目标:不要想"弹完整首",想"弹好这个乐句" +3. 容错心态:弹错没关系,继续往下 +4. 享受音乐:把弹琴当作表达,不是考试 + +练习中的放松: +- 弹错音不要停,继续往下 +- 累了就休息,不要硬撑 +- 进度慢没关系,保持正确手型,慢就是快 +``` + +### 手型自查清单 + +``` +正确手型要点: +□ 手指自然弯曲 +□ 手腕平行于键盘和小臂,放松 +□ 手臂自然下垂,肩膀不耸起 +□ 指腹触键,而非仅仅是指尖 +□ 第一关节不塌陷 + +检查方法: +- 把手垂在身体两侧,感受自然弯曲 +- 慢慢把手抬到琴键上方,保持这个弧线 +- 轻轻放上琴键,这就是正确手型 +``` + +--- + +## 练习提醒 + +### ⚠️ 禁忌 + +- 手型过紧,像握拳头 +- 手型过松,手指软绵绵 +- 过度追求音量而用力压键 + +### ✓ 正确做法 + +- 保持"松而不散,紧而不僵" +- 每次练习前都做手部热身 +- 感受手臂重量自然传递到指尖 + +--- + +## 评估标准 + +| 等级 | 标准 | +|------|------| +| 启蒙 | 弹奏时手部基本放松,无明显紧张感 | +| 入门 | 弹奏时手不僵硬,能保持基本手型 | +| 进阶 | 能感受到手臂重量自然传递到指尖 | +| 熟练 | 弹奏灵活,手腕能自然上下浮动 | +| 精通 | 能控制力量收放,音色丰富多变 | + +--- + +## 相关问题 + +- [[07_对键盘不熟悉]] - 上一个问题 +- [[09_手指不会跑动]] - 下一个问题 +- [[模板_针对性练习建议]] - 查看模板 +- [[针对性练习建议_汇总版]] - 查看完整合集 + +--- + +> **版本**:V2.0 +> **创建时间**:2026-04-17 +> **更新时间**:2026-04-19 +> **适用场景**:成人钢琴集体课学员个性化辅导 +> **更新说明**:增加启蒙级评估标准,增加适用级别列,补充放松操和呼吸法 \ No newline at end of file diff --git a/data/problems_backup_20260422_231656/09_手指不会跑动.md b/data/problems_backup_20260422_231656/09_手指不会跑动.md new file mode 100644 index 0000000..3d10946 --- /dev/null +++ b/data/problems_backup_20260422_231656/09_手指不会跑动.md @@ -0,0 +1,143 @@ +# 手指不会跑动 + +> 所属系列:钢琴学习常见问题针对性练习建议 +> 配合目标体系使用,针对性补齐短板 + +--- + +## 问题表现 + +- 弹奏时手指不灵活,移动缓慢 +- 跑动时声音不均匀,有些音强有些音弱 +- 速度提不上来,一快就乱 +- 手指之间互相牵连,不独立 + +## 原因分析 + +- 手指独立性训练不足 +- 掌关节力量不够 +- 练习方法缺乏系统性 + +## 核心解决方案 + +### 1. 基础练习 + +每日必练,建立手指独立性: +- 1:高抬指基础训练 +- 2:双音练习,增强手指支撑 +- 3:音阶跑动,保持均匀 +- 重点:触键后立即放松,不要粘在琴键上 + +### 2. 高抬指 + +手指自然抬起,快速落下: +- 抬指时手指向上自然抬起 +- 下键要快而清晰 +- 触键后立即放松,不粘在琴键上 + +### 3. 音阶琶音训练 + +各种音阶跑动练习: +- 从C大调开始,再到24个大小调 +- 慢速练习:60速度一拍两个音,确保每个音清晰均匀 +- 中速练习:80速度一拍两个音;一拍四个音,保持稳定性 +- 快速练习:100速度一拍四个音,检验掌握程度 + +--- + +## 针对性练习方案 + +### 日常基础练习 + +| 练习名称 | 时长 | 频率 | 目的 | 适用级别 |适用严重程度 +|---------|------|------|------|---------|---------| +| 高抬指练习 | 5分钟 | 每天 | 建立手指独立性 | 进阶/熟练/精通 |任何 +| 哈农练习曲 1-20条 | 10-15分钟 | 每天 | 手指独立性+跑动 | 进阶/熟练/精通 |任何 +| 音阶跑动练习 | 10分钟 | 每天 | 提升跑动能力 | 进阶 /熟练/精通|任何 +| 琶音练习 | 10分钟 | 每天 | 手指力量与耐力 | 进阶/熟练/精通 |任何 + +### 具体操作 + +**练习1:高抬指练习** +- 适用级别:进阶、熟练、精通 +- 详情请参考教学视频 + +**练习2:哈农** +- 适用级别:进阶、熟练、精通 +- 基础高抬指,每个音都抬高 +- 触键后立即放松,不要粘在琴键上 +- 慢速练习,确保每个音清晰 + +**练习3:音阶跑动** +- 适用级别:进阶、熟练、精通 +- 从C大调开始,到24个大小调 +- 慢速练习:60速度一拍两个音,确保每个音清晰均匀 +- 中速练习:80速度一拍两个音;一拍四个音,保持稳定性 +- 快速练习:100速度一拍四个音,检验掌握程度 + +**练习4:力度均匀训练** +- 适用级别:进阶、熟练、精通 +- 弹奏同一组音,用不同手指 +- 感受每个手指的力度差异 +- 针对性弱的手指加强练习 + +### 跑动提速技巧 + +``` +1. 分手练 → 合手练 + 先用右手单独练熟,再用左手练熟,最后合手 + +2. 慢练 → 快练 + 从60速开始,弹稳后加到72、84、100... + +3. 难点单独练 + 把跑动中的难点乐句单独抽出来练 + +4. 放松是关键 + 手指不要紧,弹完立即放松 +``` + +--- + +## 练习提醒 + +### ⚠️ 禁忌 + +- 追求速度而忽略质量 +- 手指粘在琴键上不放松 +- 练错手型还继续加速 + +### ✓ 正确做法 + +- 每天坚持练习,量不在多 +- 慢练是快练的基础 +- 听到不均匀的音要停下来调整 + +--- + +## 评估标准 + +| 等级 | 标准 | +|------|------| +| 启蒙 | 能慢速弹奏简单音阶,手指基本独立 | +| 入门 | 能以60速弹奏完整音阶 | +| 进阶 | 能以80速弹奏,力度基本均匀 | +| 熟练 | 能以100速弹奏跑动片段 | +| 精通 | 能驾驭快速技巧性曲目 | + +--- + +## 相关问题 + +- [[08_手指僵硬_紧张]] - 上一个问题 +- [[10_力度不会把握]] - 下一个问题 +- [[模板_针对性练习建议]] - 查看模板 +- [[针对性练习建议_汇总版]] - 查看完整合集 + +--- + +> **版本**:V2.0 +> **创建时间**:2026-04-17 +> **更新时间**:2026-04-19 +> **适用场景**:成人钢琴集体课学员个性化辅导 +> **更新说明**:增加启蒙级评估标准,增加适用级别列,完善哈农练习方法 \ No newline at end of file diff --git a/data/problems_backup_20260422_231656/10_力度不会把握.md b/data/problems_backup_20260422_231656/10_力度不会把握.md new file mode 100644 index 0000000..2c20013 --- /dev/null +++ b/data/problems_backup_20260422_231656/10_力度不会把握.md @@ -0,0 +1,148 @@ +# 力度不会把握 + +> 所属系列:钢琴学习常见问题针对性练习建议 +> 配合目标体系使用,针对性补齐短板 + +--- + +## 问题表现 + +- 弹奏时力度一成不变,缺乏变化 +- 不知道什么时候该强、什么时候该弱 +- 渐强渐弱做得不自然 +- 整首曲子听起来平淡无奇 + +## 原因分析 + +- 缺乏力度控制意识 +- 手指触键方式单一 +- 对音乐表现理解不足 + +## 核心解决方案 + +### 1. 重量弹奏法 + +利用手臂重量,而非单纯手指力量: +- 感受手臂的重量自然沉入指尖 +- 手指"放"下去,不是"敲"下去 +- 音色更深厚,手指更轻松 + +### 2. 耳朵倾听 + +听音色是否饱满、均匀: +- 弹的时候听自己的音色 +- 感受力度变化带来的音色变化 +- 用耳朵引导手指调节力度 + +### 3. 肩膀放松 + +肩膀不耸,保持放松: +- 肩膀耸起会导致力量集中在肩部 +- 力量无法顺畅传递到指尖 +- 放松肩膀,让手臂重量自然下沉 + +--- + +## 针对性练习方案 + +### 日常基础练习 + +| 练习名称 | 时长 | 频率 | 目的 | 适用级别 |适用严重程度 +|---------|------|------|------|---------|---------| +| 渐强渐弱练习 | 5分钟 | 每天 | 控制力度变化 | 启蒙/入门 |任何 +| 音阶力度对比 | 5分钟 | 每天 | 感受不同力度 | 进阶/熟练/精通 |任何 +| 练习曲力度处理 | 10分钟 | 每次新曲目 | 实践力度表现 | 进阶 |任何 +| 旋律线呼吸 | 5分钟 | 每天 | 乐句起伏处理 | 入门/进阶 |任何 +| 触键方式变化 | 5分钟 | 每天 | 多样化音色 | 进阶/熟练 |任何 + +### 具体操作 + +**练习1:渐强渐弱** +- 适用级别:启蒙级、入门级 +- 弹一个音,从最弱(pp)渐强到最强(ff) +- 再从最强渐弱到最弱 +- 感受手指力量的变化 +- 目标:能平滑地控制力度起伏 + +**练习2:音阶力度对比** +- 适用级别:进阶、熟练、精通 +- 上行渐强,下行渐弱 +- 每个八度换一个力度层次 +- 感受音乐的自然起伏 + +**练习3:旋律线呼吸** +- 适用级别:入门级、进阶级 +- 找到乐句的起点和终点 +- 起点稍强,呼吸处稍弱 +- 像唱歌一样有抑扬顿挫 + +**练习4:力度层次训练** +- 适用级别:进阶级、熟练级 +- ppp - pp - p - mp - mf - f - ff +- 每个力度层次都要能弹得出 +- 对比弹奏,感受差异 + +**练习5:触键方式变化** +- 适用级别:进阶级、熟练级 +- 浅触键:轻柔的声音 +- 深触键:浑厚的声音 +- 快触键:明亮的声音 +- 慢触键:温柔的声音 + +### 常见曲目力度处理 + +``` +《欢乐颂》: +- 主旋律:mf(中等力度) +- 重复句:稍微减弱,体现呼应 +- 高潮句:f(加强) + +《龙的传人》: +- "黑眼睛黑头发":稍强 +- "永永远远是龙的传人":渐强到最强 +``` + +--- + +## 练习提醒 + +### ⚠️ 禁忌 + +- 力度一成不变,从头弹到尾 +- 只会用大力,不会用弱音 +- 渐变太突然,不自然 + +### ✓ 正确做法 + +- 先学会听自己的弹奏 +- 多听原版音频,感受力度变化 +- 把手臂力量运用到指尖 + +--- + +## 评估标准 + +| 等级 | 标准 | +|------|------| +| 启蒙 | 能弹出基本音量变化,力度均匀 | +| 入门 | 能弹出强(f)和弱(p)两种力度 | +| 进阶 | 能做简单的渐强渐弱 | +| 熟练 | 乐句有自然的呼吸和起伏 | +| 精通 | 力度变化丰富,演奏有感染力 | + +--- + +## 相关问题 + +- [[09_手指不会跑动]] - 上一个问题 +- [[11_左右手不协调]] - 下一个问题 +- [[模板_针对性练习建议]] - 查看模板 +- [[针对性练习建议_汇总版]] - 查看完整合集 + +--- + +> **版本**:V2.0 +> **创建时间**:2026-04-17 +> **更新时间**:2026-04-19 +> **适用场景**:成人钢琴集体课学员个性化辅导 +> **更新说明**:增加启蒙级评估标准,增加适用级别列,补充重量弹奏法和耳朵倾听 \ No newline at end of file diff --git a/data/problems_backup_20260422_231656/11_左右手不协调.md b/data/problems_backup_20260422_231656/11_左右手不协调.md new file mode 100644 index 0000000..15c16ee --- /dev/null +++ b/data/problems_backup_20260422_231656/11_左右手不协调.md @@ -0,0 +1,145 @@ +# 左右手不协调 + +> 所属系列:钢琴学习常见问题针对性练习建议 +> 配合目标体系使用,针对性补齐短板 + +--- + +## 问题表现 + +- 右手会了左手不会,左手会了右手不会 +- 合手时总是错节奏 +- 一合手就乱套,要分开才能弹 +- 两只手的速度不一样 + +## 原因分析 + +- 双手独立性不够 +- 缺乏双手配合的系统训练 +- 大脑同时控制两手的区域待开发 + +## 核心解决方案 + +### 1. 分手练习 + +先单手练熟,再合手: +- 步骤1:右手单独弹10遍,直到完全记住 +- 步骤2:左手单独弹10遍,直到完全记住 +- 步骤3:先合3遍慢的,注意合手速度一定要比分手速度慢,确认配合正确 +- 步骤4:逐步提速到正常速度 + +### 2. 节拍器 + +跟节拍器慢速练习: +- 边弹边数:1-2-3-4 +- 确保左右手节奏完全一致 +- 从60速开始,逐步提速 + +### 3. 唱谱法 + +双手分别唱谱(打节奏),建立独立音乐线条: +- 分别唱出左右手的旋律;打节奏 +- 弹左手唱右手;弹右手唱左手 +- 唱左手打右手节奏;唱右手打左手节奏 + +--- + +## 针对性练习方案 + +### 日常基础练习 + +| 练习名称 | 时长 | 频率 | 目的 | 适用级别 |适用严重程度 +|---------|------|------|------|---------|---------| +| 分手练习 | 每次新曲目 | 每次 | 各自熟练 | 启蒙/入门 |严重 +| 节奏同步训练 | 5分钟 | 每天 | 统一节奏 | 启蒙/入门 |任何 +| 双手对位练习 | 10分钟 | 每天 | 协调训练 | 启蒙/入门 |中等 +| 难点单独练 | 每次练习 | 每次 | 解决配合问题 | 入门/进阶 |任何 +| 双手合奏练习 | 10分钟 | 每天 | 解决配合问题 | 任何 |任何 + +###具体操作 + +**练习1:分手→合手** +- 适用级别:启蒙级、入门级 +- 步骤1:右手单独弹10遍,直到完全记住 +- 步骤2:左手单独弹10遍,直到完全记住 +- 步骤3:先合3遍慢的,注意合手速度一定要比分手速度慢,确认配合正确 +- 步骤4:逐步提速到正常速度 + +**练习2:双手对位** +- 适用级别:启蒙级、入门级 +- 简单对位:右手弹高音C,左手弹低音C,同时按下 +- 节奏对位:右手弹四分音符,左手弹八分音符 + +**练习3:节奏同步** +- 适用级别:启蒙级、入门级 +- 用节拍器,双手同时打拍子 +- 边打拍子边数:1-2-3-4 +- 确保左右手节奏完全一致 + +**练习4:难点单独练** +- 适用级别:任何 +- 合手时经常出错的地方 +- 单独抽出来,放慢速度练 +- 练到不出错再放回原速 + +### 协调性进阶训练 + +``` +方法1:镜像练习 +- 双手做对称动作 +- 右手上行音阶,左手下行音阶 +- 同时开始,同时结束 + +方法2:交叉练习 +- 右手弹高音区,左手弹低音区 +- 熟悉键盘位置后再交换 + +方法3:节奏切分 +- 右手弹强拍,左手弹弱拍 +- 感受不同拍点的分工 +``` + +--- + +## 练习提醒 + +### ⚠️ 禁忌 + +- 还没分手练熟就急于合手 +- 合手出错就停下来重弹 +- 双手速度不一致还继续加速 + +### ✓ 正确做法 + +- 分手练到形成肌肉记忆 +- 合手时先慢练,确认配合正确 +- 哪里出错就单独练哪里 + +--- + +## 评估标准 + +| 等级 | 标准 | +|------|------| +| 启蒙 | 能简单合手,节奏基本准确 | +| 入门 |能合手简单曲目,不出错 +| 进阶 | 能分别用左右手打不同的节奏型 | | +| 熟练 | 能合手中等难度曲目 | +| 精通 | 能驾驭复杂双手配合曲目 | + +--- + +## 相关问题 + +- [[10_力度不会把握]] - 上一个问题 +- [[12_不会用节拍器]] - 下一个问题 +- [[模板_针对性练习建议]] - 查看模板 +- [[针对性练习建议_汇总版]] - 查看完整合集 + +--- + +> **版本**:V2.0 +> **创建时间**:2026-04-17 +> **更新时间**:2026-04-19 +> **适用场景**:成人钢琴集体课学员个性化辅导 +> **更新说明**:增加启蒙级评估标准,增加适用级别列,调整为综合类 \ No newline at end of file diff --git a/data/problems_backup_20260422_231656/12_不会用节拍器.md b/data/problems_backup_20260422_231656/12_不会用节拍器.md new file mode 100644 index 0000000..ee96039 --- /dev/null +++ b/data/problems_backup_20260422_231656/12_不会用节拍器.md @@ -0,0 +1,164 @@ +# 不会用节拍器 + +> 所属系列:钢琴学习常见问题针对性练习建议 +> 配合目标体系使用,针对性补齐短板 + +--- + +## 问题表现 + +- 从来不用节拍器 +- 不知道节拍器怎么调 +- 跟着节拍器反而更乱 +- 觉得自己节奏还可以,不需要节拍器 + +## 原因分析 + +- 没有建立使用节拍器的习惯 +- 对节拍器的作用理解不足 +- 内心缺乏稳定的节奏感 + +## 核心解决方案 + +### 1. 节拍器基础训练 + +从慢速开始,建立节奏感: +- 基础速度:60 = 每秒1拍(4/4拍,每小节4秒) +- 新曲目:60速开始,确保弹对 +- 熟练后:每3-5天提速5-10 + +### 2. 跟节拍器方法 + +打开节拍器,听清楚节奏: +- 脚打拍子,跟上节拍 +- 边弹边数:1-2-3-4 +- 不抢拍,不拖拍 + +### 3. 脱节拍器测试 + +验证内心节奏是否稳定: +- 用节拍器练熟后,关闭节拍器 +- 看看还能不能保持速度 +- 如果慢了或快了,说明内心节奏不稳 + +--- + +## 针对性练习方案 + +### 日常基础练习 + +| 练习名称 | 时长 | 频率 | 目的 | 适用级别 |适用严重程度 +|---------|------|------|------|---------|---------| +| 节拍器基础训练 | 10分钟 | 每天 | 建立节奏感 | 启蒙/入门 |任何 +| 节拍器速度递增练习 | 10分钟 | 每天 | 稳定提速 | 启蒙/入门/进阶/熟练/精通| 任何 +| 节奏型节奏练习 | 10分钟 | 每天 | 复杂节奏 | 入门/进阶/熟练/精通 |任何 +| 脱节拍器测试 | 5分钟 | 每周 | 验证内心节奏 | 进阶/熟练 |任何 + +### 具体操作 + +**练习1:节拍器基础设置** +- 适用级别:启蒙级、入门级 +- 认识节拍器:找到TEMPO(速度)旋钮 +- 基础速度:60 = 每秒1拍(4/4拍,每小节4秒) +- 速度标记:Largo广板 → Allegro快板 → Presto急板 + +**练习2:如何选择速度** +- 适用级别:启蒙级、入门级 +- 新曲目:60速开始,确保弹对 +- 熟练后:每3-5天提速5-10 +- 目标速度:根据曲目要求定 + +**练习3:跟节拍器的方法** +- 适用级别:启蒙级、入门级 +- 打开节拍器,听清楚节奏 +- 脚打拍子,跟上节拍 +- 边弹边数:1-2-3-4 +- 不抢拍,不拖拍 + +**练习4:节拍器关闭测试** +- 适用级别:入门级、进阶级 +- 用节拍器练熟后,关闭节拍器 +- 看看还能不能保持速度 +- 如果慢了或快了,说明内心节奏不稳 + +**练习5:变速练习** +- 适用级别:进阶级、熟练级 +- 一首曲子不同段落用不同速度 +- 慢速段落:60-70速 +- 中速段落:80-100速 +- 快速段落:110-130速 + +### 常见速度标记 + +| 术语 | 速度 | 适用 | +|------|------|------| +| Largo | 46-50 | 非常慢抒情 | +| Adagio | 66-76 | 慢速 | +| Andante | 76-108 | 行板(常用) | +| Moderato | 108-120 | 中速 | +| Allegro | 120-168 | 快板(常用) | +| Presto | 168-200 | 急板 | + +### 节拍器使用场景 + +``` +场景1:开节拍器 +- 学习新曲目时 +- 节奏不稳定时 +- 需要提速练习时 + +场景2:关闭节拍器 +- 已经练熟 +- 想要音乐自由处理 +- 考试/表演(没有节拍器) + +场景3:半开节拍器 +- 只打强拍 +- 每小节第一拍 +- 作为"拐棍"逐步撤掉 +``` + +--- + +## 练习提醒 + +### ⚠️ 禁忌 + +- 从不用节拍器 +- 跟着节拍器但完全合不上 +- 速度设置不合理(太快或太慢) + +### ✓ 正确做法 + +- 每天练习都开节拍器 +- 从慢速开始,逐步提速 +- 练到能"脱节拍器"才算真正掌握 + +--- + +## 评估标准 + +| 等级 | 标准 | +|------|------| +| 启蒙 | 能跟节拍器打拍子,知道4/4拍的结构 | +| 入门 | 能设定节拍器速度并跟上 | +| 进阶 | 能用节拍器练习并提速 | +| 熟练 | 能脱节拍器保持稳定速度 | +| 精通 | 能根据曲目处理速度变化 | + +--- + +## 相关问题 + +- [[11_左右手不协调]] - 上一个问题 +- [[13_不会编配指法]] - 下一个问题 +- [[模板_针对性练习建议]] - 查看模板 +- [[针对性练习建议_汇总版]] - 查看完整合集 + +--- + +> **版本**:V2.0 +> **创建时间**:2026-04-17 +> **更新时间**:2026-04-19 +> **适用场景**:成人钢琴集体课学员个性化辅导 +> **更新说明**:增加启蒙级评估标准,增加适用级别列,调整为识谱类 \ No newline at end of file diff --git a/data/problems_backup_20260422_231656/13_不会编配指法.md b/data/problems_backup_20260422_231656/13_不会编配指法.md new file mode 100644 index 0000000..3e403b2 --- /dev/null +++ b/data/problems_backup_20260422_231656/13_不会编配指法.md @@ -0,0 +1,129 @@ +# 不会编配指法 + +> 所属系列:钢琴学习常见问题针对性练习建议 +> 配合目标体系使用,针对性补齐短板 + +--- + +## 问题表现 + +- 拿到新谱子不知道用什么手指 +- 手指不够用,跨来跨去很别扭 +- 指法不合理导致弹不顺 +- 总是弹错音,换个手指就好了 + +## 原因分析 + +- 不了解手指编号和分工 +- 缺乏指法编配的基本原则 +- 练习时没有养成良好习惯 + +## 核心解决方案 + +### 1. 手指编号认知 + +每个手指都有固定分工: +- 1指(大拇指):最有力,但最短 +- 2指(食指):最灵活 +- 3指(中指):最长 +- 4指(无名指):独立性最差 +- 5指(小拇指):最弱,弹高音区 + +### 2. 五种基本指法规则 + +穿指、越指、扩指、缩指、顺指: +- 穿指:1指从其他手指下方穿过 +- 越指:其他手指从1指上方跨过 +- 扩指:相邻的手指弹不相邻的音 +- 缩指:相邻的音不用相邻的手指弹 +- 顺指:顺着手指自然弹奏(五指手位) + +### 3. 指法编配黄金法则 + +-先找到乐句最高音和最低音,确认手位 +- 手位变化越少越好 +- 同样结构的乐句用相同的指法 +- 避免1、5指上黑键 +- 同一首乐曲固定后不用其他指法 +- + + +--- + +## 针对性练习方案 + +### 日常基础练习 + +| 练习名称 | 时长 | 频率 | 目的 | 适用级别 |适用严重程度 +|---------|------|------|------|---------|---------| +| 手指编号认知 | 5分钟 | 初次学习 | 熟悉手指分工 | 启蒙/入门 |任何 +| 音阶指法练习 | 10分钟 | 每天 | 掌握基本指法 | 进阶/熟练/精通 |任何 +| 曲目指法分析 | 10分钟 | 每次新曲目 | 学习编配思路 | 入门/进阶 |任何 +| 穿指越指扩指缩指同音换指练习 | 5分钟 | 每天 | 掌握特殊指法 | 进阶/熟练/精通|任何 + +### 具体操作 + +**练习1:手指编号认知** +- 适用级别:启蒙级、入门级 +- 1指:大拇指 +- 2指:食指 +- 3指:中指 +- 4指:无名指 +- 5指:小拇指 + +**练习2:C大调音阶指法** +- 适用级别:进阶 +- 右手:1 2 3 1 2 3 4 5(上行) +- 左手:5 4 3 2 1 3 2 1(上行) +- 先分手练指法 +- 记住指法后形成肌肉记忆 + +**练习5:常用指法组合** +- 适用级别:进阶级、熟练级 +- 音阶跑动:123 1234 543 5432 +- 琶音:5321 5321 5321 +- 分解和弦:135 135 246 246 +--- + +## 练习提醒 + +### ⚠️ 禁忌 + +- 拿到谱子就弹,不考虑指法 +- 指法不顺手也硬撑 +- 同一个地方反复弹错 + +### ✓ 正确做法 + +- 先研究指法再开始练 +- 弹不顺就停下来调整指法 +- 复杂指法要单独练 + +--- + +## 评估标准 + +| 等级 | 标准 | +|------|------| +| 启蒙 | 知道每个手指的基本编号 | +| 入门 | 认识手指编号 | +| 进阶 | 能独立编配简单曲目的指法 | +| 熟练 | 能处理中等难度曲目的指法 | +| 精通 | 能优化指法,提升演奏流畅度 | + +--- + +## 相关问题 + +- [[12_不会用节拍器]] - 上一个问题 +- [[14_基本功练习]] - 下一个问题 +- [[模板_针对性练习建议]] - 查看模板 +- [[针对性练习建议_汇总版]] - 查看完整合集 + +--- + +> **版本**:V2.0 +> **创建时间**:2026-04-17 +> **更新时间**:2026-04-19 +> **适用场景**:成人钢琴集体课学员个性化辅导 +> **更新说明**:增加启蒙级评估标准,增加适用级别列,调整为综合类 \ No newline at end of file diff --git a/data/problems_backup_20260422_231656/14_基本功练习.md b/data/problems_backup_20260422_231656/14_基本功练习.md new file mode 100644 index 0000000..33086a8 --- /dev/null +++ b/data/problems_backup_20260422_231656/14_基本功练习.md @@ -0,0 +1,201 @@ +# 基本功练习 + +> 所属系列:钢琴学习常见问题针对性练习建议 +> 配合目标体系使用,针对性补齐短板 + +--- + +## 问题表现 + +- 不知道每天该练什么 +- 直接弹曲子,不练基本功 +- 练很久也没有进步 +- 手型和技术始终没有提升 + +## 原因分析 + +- 缺乏系统化的练习体系 +- 不重视基本功训练 +- 练习方法不科学 + +## 核心解决方案 + +### 1. 音阶琶音 + +每天必练的基础: +- C大调音阶:入门必学 +- G大调音阶:一个升号 +- F大调音阶:一个降号 +- 练习方法:分手 → 合手 → 提速 + +### 2. 连奏断奏 + +两种基本弹奏法: +- 连奏:音与音之间不断开,像水流 +- 断奏:音与音之间断开,干净利落 +- 两种都要掌握,灵活运用 + +### 3. 每日练习计划 + +科学分配练习时间: +- 热身:手部放松操 +- 技术:哈农+音阶 +- 曲目:练习曲+乐曲 +- 循序渐进,不贪快 + +--- + +## 针对性练习方案 + +### 日常基础练习 + +| 练习名称 | 时长 | 频率 | 目的 | 适用级别 | +|---------|------|------|------|---------| +| 哈农练习曲 | 10-15分钟 | 每天 | 手指独立性+支撑 | 启蒙/入门 | +| 音阶练习 | 10分钟 | 每天 | 跑动+识谱 | 启蒙/入门 | +| 琶音练习 | 5-10分钟 | 每天 | 手掌扩展+和弦 | 入门/进阶 | +| 练习曲练习 | 10-15分钟 | 每天 | 技术提升 | 入门/进阶 | +| 每日练习流程 | - | 每天 | 科学练习习惯 | 启蒙/入门 | + +### 具体操作 + +**练习1:哈农练习曲(每日必练)** +- 适用级别:启蒙级、入门级 +- 第1条:高抬指基础训练 +- 第2条:双音练习 +- 第5条:音阶跑动 +- 第7条:拇指穿梭 +- 重点:每个音都要高抬指、站稳 + +**练习2:音阶练习(12个大小调)** +- 适用级别:启蒙级、入门级 +- C大调音阶:入门必学 +- G大调音阶:一个升号 +- F大调音阶:一个降号 +- 练习方法:分手 → 合手 → 提速 + +**练习3:琶音练习** +- 适用级别:入门级、进阶级 +- 属七和弦琶音 +- 减七和弦琶音 +- 练习手掌扩展和手指拉伸 + +**练习4:练习曲练习** +- 适用级别:入门级、进阶级 +- 车尔尼599:入门经典 +- 布格缪勒:进阶练习 +- 每天练习1-2条,不要贪多 + +**练习5:技术模进** +- 适用级别:进阶级、熟练级 +- 各种节奏型练习 +- 各种音型练习 +- 提升综合技术能力 + +### 每日练习流程建议 + +``` +入门学员(30分钟/天): +├── 热身5分钟:手部放松操 +├── 哈农10分钟:1-2条高抬指 +├── 音阶10分钟:1-2个调 +└── 曲目5分钟:学习新曲目 + +进阶学员(45-60分钟/天): +├── 热身5分钟 +├── 哈农15分钟:3-5条 +├── 音阶15分钟:3-4个调 +├── 琶音5分钟 +└── 曲目15-20分钟 + +高级学员(60分钟+/天): +├── 热身5分钟 +├── 哈农20分钟:精选条目 +├── 音阶+琶音20分钟 +├── 技术练习10分钟 +└── 曲目+乐理15分钟 +``` + +### 基本功练习要点 + +``` +要点1:高抬指 +- 手指抬高后快速下键 +- 触键后立即放松 +- 其他手指保持不动 + +要点2:手型支撑 +- 掌关节拱起 +- 第一关节不塌陷 +- 手腕略高于手背 + +要点3:力量传递 +- 手臂重量传到指尖 +- 手指支撑住手臂重量 +- 音色深厚不虚 + +要点4:节奏稳定 +- 打开节拍器 +- 从慢速开始 +- 逐步提速 + +要点5:练习质量 +- 慢练是快练的基础 +- 分手练是合手的基础 +- 精练一首胜过快练十首 +``` + +### 常见基本功问题解决方案 + +| 问题 | 解决方案 | +|------|---------| +| 手型塌陷 | 高抬指练习,加强支撑 | +| 手指无力 | 哈农+支撑练习 | +| 跑动不均 | 慢练+针对性弱指 | +| 节奏不稳 | 每天开节拍器 | +| 识谱慢 | 每天读新谱 | + +--- + +## 练习提醒 + +### ⚠️ 禁忌 + +- 不练基本功,直接弹曲子 +- 哈农草草弹一遍就完事 +- 只弹喜欢的曲目,不练技术 + +### ✓ 正确做法 + +- 每天必练基本功 +- 基本功占练习时间50% +- 慢练高质量,不求快 + +--- + +## 评估标准 + +| 等级 | 标准 | +|------|------| +| 启蒙 | 掌握基本手型,能弹简单音阶 | +| 入门 | 每天坚持基本功练习 | +| 进阶 | 基本功能涵盖各技术点 | +| 熟练 | 能自主设计练习内容 | +| 精通 | 形成系统化的练习体系 | + +--- + +## 相关问题 + +- [[13_不会编配指法]] - 上一个问题 +- [[15_练习缺乏监督]] - 下一个问题 +- [[模板_针对性练习建议]] - 查看模板 +- [[针对性练习建议_汇总版]] - 查看完整合集 + +--- + +> **版本**:V2.0 +> **创建时间**:2026-04-17 +> **更新时间**:2026-04-19 +> **适用场景**:成人钢琴集体课学员个性化辅导 +> **更新说明**:增加启蒙级评估标准,增加适用级别列,调整为综合类 \ No newline at end of file diff --git a/data/problems_backup_20260422_231656/15_练习缺乏监督.md b/data/problems_backup_20260422_231656/15_练习缺乏监督.md new file mode 100644 index 0000000..99c4a82 --- /dev/null +++ b/data/problems_backup_20260422_231656/15_练习缺乏监督.md @@ -0,0 +1,172 @@ +# 练习缺乏监督 + +> 所属系列:钢琴学习常见问题针对性练习建议 +> 配合目标体系使用,针对性补齐短板 + +--- + +## 问题表现 + +- 回家后不记得练习 +- 练习时间不够或偷懒 +- 练习方法不固定,随意弹 +- 没人督促就懈怠 + +## 原因分析 + +- 练习习惯未养成 +- 缺乏外部监督机制 +- 练习目标不明确 +- 成就感不足,缺乏动力 + +## 核心解决方案 + +### 1. 练习习惯培养 + +固定时间、固定时长: +- 设置固定练习时间(如每天晚上7点) +- 手机闹钟提醒 +- 形成生物钟习惯 + +### 2. 录音反馈 + +录下练习回听: +- 用手机录下练习 +- 回听发现问题 +- 对比进步,增强信心 + +### 3. 练习日志 + +记录每天练习内容: +- 日期、时间、内容、时长 +- 问题解决情况 +- 第二天要练什么 + +--- + +## 针对性练习方案 + +### 日常基础练习 + +| 练习名称 | 时长 | 频率 | 目的 | 适用级别 |适用严重程度 +|---------|------|------|------|---------|---------| +| 练习计划制定 | 10分钟 | 每周 | 明确目标 | 任何 |任何 +| 练习打卡 | 每次练习 | 每天 | 记录习惯 | 任何 |任何 +| 练习反馈 | 5分钟 | 每次练习 | 自我监督 | 任何 |任何 +| 录音回听 | 5分钟 | 每次练习 | 发现问题 | 任何 |任何 +| 目标可视化 | - | 每天 | 增强动力 | 任何|任何 + +### 具体操作 + +**练习1:制定周练习计划** +- 适用级别:任何 +- 每周日制定本周练习安排 +- 具体到每天练什么、练多久 +- 写在纸上或手机备忘录 + +**练习2:练习打卡** +- 适用级别:任何 +- 用练习记录表打卡 +- 记录:日期、时间、内容、时长 +- 可使用钢琴学习APP辅助 + +**练习3:自我检查** +- 适用级别:任何 +- 每次练习前回顾上次问题 +- 练习后检查是否解决 +- 录音回放,发现问题 + +**练习4:设置提醒** +- 适用级别:任何 +- 手机闹钟提醒练习时间 +- 固定时间固定地点练习 +- 形成生物钟习惯 + +**练习5:目标可视化** +- 适用级别:任何 +- 贴练习计划在琴边 +- 完成打勾,看到进度 +- 积累成就感 + + +### 提升练习动力的方法 + +``` +方法1:设置小目标 +- 本周学会一小段 +- 这个月能弹完整首 +- 达成后给自己奖励 + +方法2:社交动力 +- 在群里分享练习成果 +- 互相点赞鼓励 +- 参加汇报演出 + +方法3:可视化进步 +- 定期录像对比 +- 记录从不会到会的过程 +- 看到自己的成长 +``` + +### 每日练习建议流程 + +``` +开始前(2分钟): +├── 回忆上次练习的问题 +└── 明确今天练习目标 + +练习中(按照计划): +├── 热身:哈农5分钟 +├── 技术:音阶/琶音10分钟 +└── 曲目:练习曲/乐曲15分钟 + +结束后(3分钟): +├── 检查今天的问题是否解决 +├── 记录练习情况 +└── 预习明天要练的内容 +``` + +--- + +## 练习提醒 + +### ⚠️ 禁忌 + +- 三天打鱼两天晒网 +- 练习时间不固定 +- 练错了没人纠正 + +### ✓ 正确做法 + +- 固定练习时间 +- 每天坚持,哪怕15分钟 +- 记录练习情况,定期复盘 + +--- + +## 评估标准 + +| 等级 | 标准 | +|------|------| +| 启蒙 | 有固定练习时间概念,能完成简单练习计划 | +| 入门 | 能保证基本练习时间 | +| 进阶 | 练习有计划、有记录 | +| 熟练 | 形成自动化的练习习惯 | +| 精通 | 能自主制定和调整练习计划 | + +--- + +## 相关问题 + +- [[14_基本功练习]] - 上一个问题 +- [[01_手小]] - 返回总览 +- [[模板_针对性练习建议]] - 查看模板 +- [[针对性练习建议_汇总版]] - 查看完整合集 + +--- + +> **版本**:V2.0 +> **创建时间**:2026-04-17 +> **更新时间**:2026-04-19 +> **适用场景**:成人钢琴集体课学员个性化辅导 +> **更新说明**:增加启蒙级评估标准,增加适用级别列,调整为综合类 \ No newline at end of file diff --git a/data/problems_backup_20260422_231656/模板_针对性练习建议.md b/data/problems_backup_20260422_231656/模板_针对性练习建议.md new file mode 100644 index 0000000..79507bd --- /dev/null +++ b/data/problems_backup_20260422_231656/模板_针对性练习建议.md @@ -0,0 +1,74 @@ +# {{问题名称}} + +> 所属系列:钢琴学习常见问题针对性练习建议 +> 配合目标体系使用,针对性补齐短板 + +--- + +## 问题表现 + + + +- 示例:弹奏时手腕紧贴琴键或琴面 + +## 原因分析 + + + +- 示例:手腕力量支撑不足 + +## 针对性练习方案 + +### 日常基础练习 + +| 练习名称 | 时长 | 频率 | 目的 | +|---------|------|------|------| +| 练习1 | X分钟 | 每天 | 目的1 | +| 练习2 | X分钟 | 每天 | 目的2 | +| 练习3 | X分钟 | 每天 | 目的3 | + +### 具体操作 + +``` + + +练习1:练习名称 +- 动作要点1 +- 动作要点2 +- 动作要点3 +``` + +## 练习提醒 + +### ⚠️ 禁忌 + +- 禁忌1 +- 禁忌2 + +### ✓ 正确做法 + +- 正确做法1 +- 正确做法2 + +## 评估标准 + +| 等级 | 标准 | +|------|------| +| 入门 | 能达到的标准 | +| 进阶 | 能达到的标准 | +| 熟练 | 能达到的标准 | +| 精通 | 能达到的标准 | + +--- + +## 相关问题 + +- [[01_手小]] - 返回总览 +- [[03_节奏感差]] - 下一个问题 +- [[针对性练习建议_汇总版]] - 查看完整合集 + +--- + +> **版本**:V1.0 +> **创建时间**:2026-04-17 +> **适用场景**:成人钢琴集体课学员个性化辅导 \ No newline at end of file diff --git a/data/problems_backup_20260422_231656/针对性练习建议_汇总版.md b/data/problems_backup_20260422_231656/针对性练习建议_汇总版.md new file mode 100644 index 0000000..d14984c --- /dev/null +++ b/data/problems_backup_20260422_231656/针对性练习建议_汇总版.md @@ -0,0 +1,130 @@ +# 钢琴学习常见问题 · 针对性练习建议(汇总版) + +> 包含所有常见问题的完整合集,便于快速查阅 +> 配合目标体系使用,针对性补齐短板 + +--- + +## 目录 + +| 编号 | 问题 | 文件 | +|------|------|------| +| 01 | 手小 | [[01_手小]] | +| 02 | 识谱慢 | [[02_识谱慢]] | +| 03 | 节奏感差 | [[03_节奏感差]] | +| 04 | 压手腕 | [[04_压手腕]] | +| 05 | 掌关节支撑差 | [[05_掌关节支撑差]] | +| 06 | 第一关节支撑差 | [[06_第一关节支撑差]] | +| 07 | 对键盘不熟悉 | [[07_对键盘不熟悉]] | +| 08 | 手指僵硬、紧张 | [[08_手指僵硬_紧张]] | +| 09 | 手指不会跑动 | [[09_手指不会跑动]] | +| 10 | 力度不会把握 | [[10_力度不会把握]] | +| 11 | 左右手不协调 | [[11_左右手不协调]] | +| 12 | 不会用节拍器 | [[12_不会用节拍器]] | +| 13 | 不会编配指法 | [[13_不会编配指法]] | +| 14 | 基本功练习 | [[14_基本功练习]] | +| 15 | 练习缺乏监督 | [[15_练习缺乏监督]] | + +--- + +## 问题速查表 + +| 问题 | 严重程度 | 优先级 | 相关维度 | +|------|---------|--------|---------| +| 手小 | □轻微 □中等 □严重 | ★★★ | 弹奏技术 | +| 识谱慢 | □轻微 □中等 □严重 | ★★★ | 识谱能力 | +| 节奏感差 | □轻微 □中等 □严重 | ★★★ | 节奏控制 | +| 压手腕 | □轻微 □中等 □严重 | ★★★ | 弹奏技术 | +| 掌关节支撑差 | □轻微 □中等 □严重 | ★★★ | 弹奏技术 | +| 第一关节支撑差 | □轻微 □中等 □严重 | ★★★ | 弹奏技术 | +| 对键盘不熟悉 | □轻微 □中等 □严重 | ★★★ | 弹奏技术 | +| 手指僵硬、紧张 | □轻微 □中等 □严重 | ★★★ | 弹奏技术 | +| 手指不会跑动 | □轻微 □中等 □严重 | ★★★ | 弹奏技术 | +| 力度不会把握 | □轻微 □中等 □严重 | ★★★ | 音乐表现 | +| 左右手不协调 | □轻微 □中等 □严重 | ★★★ | 弹奏技术 | +| 不会用节拍器 | □轻微 □中等 □严重 | ★★★ | 节奏控制 | +| 不会编配指法 | □轻微 □中等 □严重 | ★★★ | 弹奏技术 | +| 基本功练习 | □轻微 □中等 □严重 | ★★★ | 综合基础 | +| 练习缺乏监督 | □轻微 □中等 □严重 | ★★★ | 练习习惯 | + +--- + +## 快速定位 + +### 按问题类型 + +**技术类问题** +- 手小 → [[01_手小]] +- 压手腕 → [[04_压手腕]] +- 掌关节支撑差 → [[05_掌关节支撑差]] +- 第一关节支撑差 → [[06_第一关节支撑差]] +- 手指僵硬、紧张 → [[08_手指僵硬_紧张]] +- 手指不会跑动 → [[09_手指不会跑动]] +- 左右手不协调 → [[11_左右手不协调]] +- 不会编配指法 → [[13_不会编配指法]] +- 基本功练习 → [[14_基本功练习]] + +**认知类问题** +- 识谱慢 → [[02_识谱慢]] +- 对键盘不熟悉 → [[07_对键盘不熟悉]] + +**节奏类问题** +- 节奏感差 → [[03_节奏感差]] +- 不会用节拍器 → [[12_不会用节拍器]] + +**表现类问题** +- 力度不会把握 → [[10_力度不会把握]] + +--- + +## 使用流程 + +### 学员端 + +1. 填写学员问题自评表 +2. 标记问题严重程度 +3. 对照问题找到对应文件 +4. 按照练习方案执行 + +### 教师端 + +1. 收集学员自评结果 +2. 识别主要问题(1-2个) +3. 打印或发送对应练习文件 +4. 每次课后跟踪改善情况 +5. 定期(每2周)重新评估 + +--- + +## 评估维度对照 + +| 问题 | 对应目标维度 | 评估等级 | +|------|-------------|---------| +| 识谱慢 | 识谱能力 | L1-L5 | +| 节奏感差 | 节奏控制 | L1-L5 | +| 手小 | 弹奏技术 | L1-L5 | +| 压手腕 | 弹奏技术 | L1-L5 | +| 掌关节支撑差 | 弹奏技术 | L1-L5 | +| 第一关节支撑差 | 弹奏技术 | L1-L5 | +| 对键盘不熟悉 | 弹奏技术 | L1-L5 | +| 手指僵硬、紧张 | 弹奏技术 | L1-L5 | +| 手指不会跑动 | 弹奏技术 | L1-L5 | +| 力度不会把握 | 音乐表现 | L1-L5 | +| 左右手不协调 | 弹奏技术 | L1-L5 | +| 不会用节拍器 | 节奏控制 | L1-L5 | +| 不会编配指法 | 弹奏技术 | L1-L5 | +| 基本功练习 | 综合基础 | L1-L5 | +| 练习缺乏监督 | 练习习惯 | L1-L5 | + +--- + +## 模板文件 + +- [[模板_针对性练习建议]] - 查看文件模板 + +--- + +> **版本**:V1.1 +> **创建时间**:2026-04-17 +> **更新时间**:2026-04-17 +> **适用场景**:成人钢琴集体课学员个性化辅导 \ No newline at end of file diff --git a/docs/superpowers/plans/2026-04-23-goal-management-plan.md b/docs/superpowers/plans/2026-04-23-goal-management-plan.md new file mode 100644 index 0000000..d652e46 --- /dev/null +++ b/docs/superpowers/plans/2026-04-23-goal-management-plan.md @@ -0,0 +1,553 @@ +# 目标管理模块实现计划 + +> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development or superpowers:executing-plans to implement this plan. + +**Goal:** 实现目标管理模块,支持目标的CRUD、目标间的DAG关联、与学员的关联记录 + +**Architecture:** 使用Flask-SQLAlchemy定义数据模型,通过RESTful API暴露接口,前端复用现有EasyMDE和星级组件 + +**Tech Stack:** Flask, SQLite, SQLAlchemy, EasyMDE + +--- + +## 文件结构 + +``` +app/ +├── models.py # Goal, GoalRelation, StudentGoal 模型 +├── routes/ +│ ├── goals.py # 目标 CRUD + 关联管理 API +│ └── student_goals.py # 学员目标 API +└── templates/ + ├── goals.html # 目标管理页面 + └── student.html # 扩展学员详情页的目标区块 + +docs/ +└── superpowers/plans/ + └── 2026-04-23-goal-management.md # 设计文档 +``` + +--- + +## Task 1: 数据模型 + +**Files:** +- Modify: `app/models.py:193-240` (在 PracticePlan 之前添加新模型) + +- [ ] **Step 1: 在 models.py 添加 Goal 模型** + +```python +class Goal(db.Model): + """目标表""" + __tablename__ = "goals" + + id = db.Column(db.Integer, primary_key=True) + name = db.Column(db.String(100), nullable=False) + 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) + + def to_dict(self): + return { + "id": self.id, + "name": self.name, + "content": self.content, + "created_at": self.created_at.isoformat() if self.created_at else None, + "updated_at": self.updated_at.isoformat() if self.updated_at else None, + } +``` + +- [ ] **Step 2: 在 models.py 添加 GoalRelation 模型** + +```python +class GoalRelation(db.Model): + """目标关联表 - 自关联多对多""" + __tablename__ = "goal_relations" + + parent_goal_id = db.Column(db.Integer, db.ForeignKey("goals.id"), primary_key=True) + child_goal_id = db.Column(db.Integer, db.ForeignKey("goals.id"), primary_key=True) + + parent = db.relationship("Goal", foreign_keys=[parent_goal_id], backref="child_relations") + child = db.relationship("Goal", foreign_keys=[child_goal_id], backref="parent_relations") +``` + +- [ ] **Step 3: 在 models.py 添加 StudentGoal 模型** + +```python +class StudentGoal(db.Model): + """学员目标记录表""" + __tablename__ = "student_goals" + + id = db.Column(db.Integer, primary_key=True) + student_id = db.Column(db.Integer, db.ForeignKey("students.id"), nullable=False) + goal_id = db.Column(db.Integer, db.ForeignKey("goals.id"), nullable=False) + status = db.Column(db.String(20), default="未开始") # 未开始/进行中/已完成 + mastery_level = db.Column(db.Integer, default=1) # 1-5 + deadline = db.Column(db.DateTime) + completed_at = db.Column(db.DateTime) + created_at = db.Column(db.DateTime, default=datetime.now) + + student = db.relationship("Student", backref="goal_records") + goal = db.relationship("Goal") + + def to_dict(self): + return { + "id": self.id, + "student_id": self.student_id, + "goal_id": self.goal_id, + "goal_name": self.goal.name if self.goal else None, + "status": self.status, + "mastery_level": self.mastery_level, + "deadline": self.deadline.isoformat() if self.deadline else None, + "completed_at": self.completed_at.isoformat() if self.completed_at else None, + } +``` + +- [ ] **Step 4: 运行 lint 验证** + +Run: `lsp_diagnostics('app/models.py')` + +- [ ] **Step 5: 提交** + +```bash +git add app/models.py +git commit -m "feat: 添加 Goal, GoalRelation, StudentGoal 模型" +``` + +--- + +## Task 2: 目标 CRUD API + +**Files:** +- Create: `app/routes/goals.py` + +- [ ] **Step 1: 创建 routes/goals.py** + +```python +from flask import Blueprint, request, jsonify +from app.models import db, Goal +from app.routes.auth import login_required_json + +goals_bp = Blueprint("goals", __name__) + +@goals_bp.route("/api/goals", methods=["GET"]) +@login_required_json +def get_goals(): + goals = Goal.query.order_by(Goal.created_at.desc()).all() + return jsonify([g.to_dict() for g in goals]) + +@goals_bp.route("/api/goals", methods=["POST"]) +@login_required_json +def create_goal(): + data = request.get_json() + goal = Goal(name=data["name"], content=data.get("content", "")) + db.session.add(goal) + db.session.commit() + return jsonify(goal.to_dict()), 201 + +@goals_bp.route("/api/goals/", methods=["GET"]) +@login_required_json +def get_goal(goal_id): + goal = Goal.query.get_or_404(goal_id) + return jsonify(goal.to_dict()) + +@goals_bp.route("/api/goals/", methods=["PUT"]) +@login_required_json +def update_goal(goal_id): + goal = Goal.query.get_or_404(goal_id) + data = request.get_json() + if "name" in data: + goal.name = data["name"] + if "content" in data: + goal.content = data["content"] + db.session.commit() + return jsonify(goal.to_dict()) + +@goals_bp.route("/api/goals/", methods=["DELETE"]) +@login_required_json +def delete_goal(goal_id): + goal = Goal.query.get_or_404(goal_id) + db.session.delete(goal) + db.session.commit() + return jsonify({"message": "删除成功"}) +``` + +- [ ] **Step 2: 在 app/routes/__init__.py 注册蓝图** + +```python +from app.routes import goals +app.register_blueprint(goals.goals_bp) +``` + +- [ ] **Step 3: 运行 lint 验证** + +Run: `lsp_diagnostics('app/routes/goals.py')` + +- [ ] **Step 4: 提交** + +```bash +git add app/routes/goals.py app/routes/__init__.py +git commit -m "feat: 目标 CRUD API" +``` + +--- + +## Task 3: 目标关联 API + 循环检测 + +**Files:** +- Modify: `app/routes/goals.py` (添加关联接口) + +- [ ] **Step 1: 添加循环检测函数** + +```python +def _has_cycle(parent_id, child_id): + """检测添加 child_id 作为 parent_id 的子目标是否会形成循环""" + visited = set() + stack = [child_id] + + while stack: + current = stack.pop() + if current == parent_id: + return True + if current in visited: + continue + visited.add(current) + for rel in GoalRelation.query.filter_by(parent_goal_id=current).all(): + stack.append(rel.child_goal_id) + + return False +``` + +- [ ] **Step 2: 添加关联接口** + +```python +@goals_bp.route("/api/goals//children", methods=["GET"]) +@login_required_json +def get_goal_children(goal_id): + relations = GoalRelation.query.filter_by(parent_goal_id=goal_id).all() + child_ids = [r.child_goal_id for r in relations] + children = Goal.query.filter(Goal.id.in_(child_ids)).all() if child_ids else [] + return jsonify([c.to_dict() for c in children]) + +@goals_bp.route("/api/goals//parents", methods=["GET"]) +@login_required_json +def get_goal_parents(goal_id): + relations = GoalRelation.query.filter_by(child_goal_id=goal_id).all() + parent_ids = [r.parent_goal_id for r in relations] + parents = Goal.query.filter(Goal.id.in_(parent_ids)).all() if parent_ids else [] + return jsonify([p.to_dict() for p in parents]) + +@goals_bp.route("/api/goals//children", methods=["POST"]) +@login_required_json +def add_goal_child(goal_id): + data = request.get_json() + child_id = data["child_goal_id"] + + if goal_id == child_id: + return jsonify({"error": "不能将目标关联到自身"}), 400 + + if _has_cycle(goal_id, child_id): + return jsonify({"error": "添加此关联会形成循环引用"}), 400 + + # 检查是否已存在 + existing = GoalRelation.query.filter_by(parent_goal_id=goal_id, child_goal_id=child_id).first() + if existing: + return jsonify({"error": "关联已存在"}), 400 + + relation = GoalRelation(parent_goal_id=goal_id, child_goal_id=child_id) + db.session.add(relation) + db.session.commit() + return jsonify({"message": "添加成功"}) + +@goals_bp.route("/api/goals//children/", methods=["DELETE"]) +@login_required_json +def remove_goal_child(goal_id, child_id): + relation = GoalRelation.query.filter_by(parent_goal_id=goal_id, child_goal_id=child_id).first() + if relation: + db.session.delete(relation) + db.session.commit() + return jsonify({"message": "移除成功"}) +``` + +- [ ] **Step 3: 运行 lint 验证** + +Run: `lsp_diagnostics('app/routes/goals.py')` + +- [ ] **Step 4: 提交** + +```bash +git add app/routes/goals.py +git commit -m "feat: 目标关联 API + 循环检测" +``` + +--- + +## Task 4: 学员目标 API + +**Files:** +- Create: `app/routes/student_goals.py` + +- [ ] **Step 1: 创建 student_goals.py** + +```python +from flask import Blueprint, request, jsonify +from app.models import db, Student, Goal, StudentGoal +from app.routes.auth import login_required_json +from datetime import datetime + +student_goals_bp = Blueprint("student_goals", __name__) + +@student_goals_bp.route("/api/students//goals", methods=["GET"]) +@login_required_json +def get_student_goals(student_id): + Student.query.get_or_404(student_id) + records = StudentGoal.query.filter_by(student_id=student_id).all() + return jsonify([r.to_dict() for r in records]) + +@student_goals_bp.route("/api/students//goals", methods=["POST"]) +@login_required_json +def add_student_goal(student_id): + Student.query.get_or_404(student_id) + data = request.get_json() + goal_id = data["goal_id"] + + # 检查目标是否存在 + Goal.query.get_or_404(goal_id) + + # 检查是否已添加 + existing = StudentGoal.query.filter_by(student_id=student_id, goal_id=goal_id).first() + if existing: + return jsonify({"error": "该目标已添加"}), 400 + + record = StudentGoal( + student_id=student_id, + goal_id=goal_id, + status="未开始", + mastery_level=1 + ) + db.session.add(record) + db.session.commit() + return jsonify(record.to_dict()), 201 + +@student_goals_bp.route("/api/students//goals/", methods=["PUT"]) +@login_required_json +def update_student_goal(student_id, goal_id): + record = StudentGoal.query.filter_by(student_id=student_id, goal_id=goal_id).first_or_404() + data = request.get_json() + + if "status" in data: + record.status = data["status"] + if data["status"] == "已完成": + record.completed_at = datetime.now() + if "mastery_level" in data: + record.mastery_level = data["mastery_level"] + if "deadline" in data: + record.deadline = datetime.fromisoformat(data["deadline"]) if data["deadline"] else None + + db.session.commit() + return jsonify(record.to_dict()) + +@student_goals_bp.route("/api/students//goals/", methods=["DELETE"]) +@login_required_json +def remove_student_goal(student_id, goal_id): + record = StudentGoal.query.filter_by(student_id=student_id, goal_id=goal_id).first_or_404() + db.session.delete(record) + db.session.commit() + return jsonify({"message": "移除成功"}) +``` + +- [ ] **Step 2: 在 app/routes/__init__.py 注册蓝图** + +```python +from app.routes import student_goals +app.register_blueprint(student_goals.student_goals_bp) +``` + +- [ ] **Step 3: 运行 lint 验证** + +Run: `lsp_diagnostics('app/routes/student_goals.py')` + +- [ ] **Step 4: 提交** + +```bash +git add app/routes/student_goals.py app/routes/__init__.py +git commit -m "feat: 学员目标 API" +``` + +--- + +## Task 5: 目标管理页面 + +**Files:** +- Create: `app/templates/goals.html` + +- [ ] **Step 1: 创建 goals.html** + +参考现有模板结构,包含: +- 目标列表(树状或平铺) +- 创建/编辑目标 Modal(使用 EasyMDE) +- 关联管理(添加/移除子目标) + +- [ ] **Step 2: 添加路由** + +```python +@goals_bp.route("/goals") +@login_required_json +def goals_page(): + return render_template("goals.html") +``` + +- [ ] **Step 3: 运行 lint 验证** + +Run: `lsp_diagnostics('app/templates/goals.html')` + +- [ ] **Step 4: 提交** + +```bash +git add app/templates/goals.html app/routes/goals.py +git commit -m "feat: 目标管理页面" +``` + +--- + +## Task 6: 学员详情页目标区块 + +**Files:** +- Modify: `app/templates/student.html` + +- [ ] **Step 1: 在 student.html 添加目标区块** + +在现有问题记录和练习方案之间添加目标区块: +- 显示学员目标列表(名称、状态、★完成度、截止日期) +- 添加/移除目标 +- 编辑目标状态 + +- [ ] **Step 2: 添加 JS 函数** + +- `loadGoals()` - 加载目标列表 +- `renderGoalList()` - 渲染目标 +- `showAddGoalModal()` - 显示添加目标弹窗 +- `saveAddGoal()` - 保存添加 +- `updateGoalStatus()` - 更新状态 + +- [ ] **Step 3: 运行 lint 验证** + +Run: `lsp_diagnostics('app/templates/student.html')` + +- [ ] **Step 4: 提交** + +```bash +git add app/templates/student.html +git commit -m "feat: 学员详情页目标区块" +``` + +--- + +## Task 7: 数据库迁移 + +**Files:** +- Modify: `app/__init__.py` (在 db.create_all() 之前添加迁移逻辑) + +- [ ] **Step 1: 添加表存在性检测和创建** + +在 `create_app()` 中 db.create_all() 之后添加: + +```python +# 检查 goals 表是否存在,不存在则创建 +result = db.session.execute( + text("SELECT name FROM sqlite_master WHERE type='table' AND name='goals'") +) +if not result.fetchone(): + db.session.execute(text(""" + CREATE TABLE goals ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + name VARCHAR(100) NOT NULL, + content TEXT, + created_at DATETIME, + updated_at DATETIME + ) + """)) + db.session.commit() + +# 检查 goal_relations 表 +result = db.session.execute( + text("SELECT name FROM sqlite_master WHERE type='table' AND name='goal_relations'") +) +if not result.fetchone(): + db.session.execute(text(""" + CREATE TABLE goal_relations ( + parent_goal_id INTEGER NOT NULL, + child_goal_id INTEGER NOT NULL, + PRIMARY KEY (parent_goal_id, child_goal_id), + FOREIGN KEY (parent_goal_id) REFERENCES goals(id), + FOREIGN KEY (child_goal_id) REFERENCES goals(id) + ) + """)) + db.session.commit() + +# 检查 student_goals 表 +result = db.session.execute( + text("SELECT name FROM sqlite_master WHERE type='table' AND name='student_goals'") +) +if not result.fetchone(): + db.session.execute(text(""" + CREATE TABLE student_goals ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + student_id INTEGER NOT NULL, + goal_id INTEGER NOT NULL, + status VARCHAR(20) DEFAULT '未开始', + mastery_level INTEGER DEFAULT 1, + deadline DATETIME, + completed_at DATETIME, + created_at DATETIME, + FOREIGN KEY (student_id) REFERENCES students(id), + FOREIGN KEY (goal_id) REFERENCES goals(id) + ) + """)) + db.session.commit() +``` + +- [ ] **Step 2: 提交** + +```bash +git add app/__init__.py +git commit -m "feat: 数据库迁移脚本 - goals, goal_relations, student_goals 表" +``` + +--- + +## Task 8: 更新文档 + +**Files:** +- Modify: `docs/MODELS.md` (添加新表说明) +- Modify: `docs/API.md` (添加新 API 说明) +- Modify: `docs/STRUCTURE.md` (添加新文件) + +- [ ] **Step 1: 更新 MODELS.md** + +添加 Goal, GoalRelation, StudentGoal 表说明 + +- [ ] **Step 2: 更新 API.md** + +添加目标 API 和学员目标 API 说明 + +- [ ] **Step 3: 提交** + +```bash +git add docs/MODELS.md docs/API.md docs/STRUCTURE.md +git commit -m "docs: 更新文档 - 目标管理模块" +``` + +--- + +## 验证清单 + +- [ ]goals 表创建成功 +- [ ]goal_relations 表创建成功 +- [ ]student_goals 表创建成功 +- [ ] 目标 CRUD API 测试通过 +- [ ] 目标关联 API 测试通过(包含循环检测) +- [ ] 学员目标 API 测试通过 +- [ ] 目标管理页面可访问 +- [ ] 学员详情页目标区块正常显示 +- [ ] 星级显示正确(1-5 → ★-★★★★★) diff --git a/docs/superpowers/plans/2026-04-23-goal-management.md b/docs/superpowers/plans/2026-04-23-goal-management.md new file mode 100644 index 0000000..daeac81 --- /dev/null +++ b/docs/superpowers/plans/2026-04-23-goal-management.md @@ -0,0 +1,143 @@ +# 目标管理模块设计 + +> 日期:2026-04-23 +> 状态:待评审 + +## 概述 + +目标管理模块用于管理系统化的钢琴学习目标,支持目标间的多对多关联(DAG结构),以及目标与学员的关联记录。 + +## 数据模型 + +### 1. Goal (目标) + +| 字段 | 类型 | 说明 | +|------|------|------| +| id | Integer | 主键,自增 | +| name | String(100) | 目标名称,必填 | +| content | Text | Markdown 格式详细内容 | +| created_at | DateTime | 创建时间 | +| updated_at | DateTime | 更新时间 | + +### 2. GoalRelation (目标关联 - 自关联多对多) + +| 字段 | 类型 | 说明 | +|------|------|------| +| parent_goal_id | Integer | 外键 → goals.id | +| child_goal_id | Integer | 外键 → goals.id | +| PRIMARY KEY | (parent_goal_id, child_goal_id) | 联合主键 | + +**约束**: +- 禁止循环引用(A→B→C→A) +- 自关联:goal 可以是自身的父/子节点 + +### 3. StudentGoal (学员目标记录) + +| 字段 | 类型 | 说明 | +|------|------|------| +| id | Integer | 主键,自增 | +| student_id | Integer | 外键 → students.id | +| goal_id | Integer | 外键 → goals.id | +| status | String(20) | 状态:未开始/进行中/已完成 | +| mastery_level | Integer | 完成度:1-5(1最少,5最精通) | +| deadline | DateTime | 截止日期 | +| completed_at | DateTime | 完成日期 | +| created_at | DateTime | 创建时间 | + +**显示规则**: +- `mastery_level` 直接渲染为对应数量的五角星(★) + +--- + +## API 接口 + +### 目标管理 + +``` +GET /api/goals # 获取所有目标 +POST /api/goals # 创建目标 +GET /api/goals/ # 获取目标详情 +PUT /api/goals/ # 更新目标 +DELETE /api/goals/ # 删除目标 +``` + +### 目标关联 + +``` +GET /api/goals//parents # 获取父目标列表 +GET /api/goals//children # 获取子目标列表 +POST /api/goals//children # 添加子目标关联 +DELETE /api/goals//children/ # 移除关联 +``` + +### 学员目标 + +``` +GET /api/students//goals # 获取学员的目标列表 +POST /api/students//goals # 为学员添加目标 +PUT /api/students//goals/ # 更新学员目标状态 +DELETE /api/students//goals/ # 移除学员的目标 +``` + +--- + +## 循环引用检测 + +在添加关联时必须检测: + +```python +def has_cycle(goal_id, new_child_id): + """检测添加 new_child_id 作为 goal_id 的子目标是否会形成循环""" + visited = set() + stack = [new_child_id] + + while stack: + current = stack.pop() + if current == goal_id: + return True # 发现循环 + if current in visited: + continue + visited.add(current) + # 获取 current 的所有子目标,继续检测 + for child in get_children(current): + stack.append(child) + + return False +``` + +--- + +## 前端页面 + +### 1. 目标管理页面 (`/goals`) + +- 目标列表(可树状展示) +- 创建/编辑/删除目标 +- 目标内容 Markdown 编辑器 +- 关联管理(拖拽或选择器添加关联) + +### 2. 学员详情页目标区块 + +在现有 `student.html` 中扩展: +- 显示学员的目标列表 +- 每项目标显示:名称、状态、★完成度、截止日期 +- 可添加/移除/编辑目标 +- 状态变更触发刷新 + +--- + +## 实现顺序 + +1. **数据模型** - goals, goal_relations, student_goals 表 +2. **目标 CRUD API** - 基础的增删改查 +3. **目标关联 API** - 关联管理 + 循环检测 +4. **学员目标 API** - 学员与目标的关联管理 +5. **目标管理页面** - 目标列表 + 关联管理 +6. **学员详情页扩展** - 目标区块 + +--- + +## 依赖关系 + +- 无外部依赖 +- 复用现有的 Markdown 编辑器(EasyMDE)和星级组件