每日总结更新 20260317

This commit is contained in:
xiaoban-ai 2026-03-17 08:00:01 +08:00
parent 08c655c1d7
commit 9ad5ca3088
9 changed files with 326 additions and 1 deletions

View File

@ -0,0 +1,52 @@
# 学习分析报告V2版本规范
## 第一板块:能力五角星 (能力画像)
**目标:** 让家长一眼看到孩子的综合实力,而不是冷冰冰的分数。
- **可视化呈现:** 动态雷达图。
- **JSON 数据维度:**
- **词义掌握 (Vocab Meaning)**:对应“词汇量和理解深度”。
- **词汇发音 (Vocab Pron)**:对应“单词读得准不准”。
- **语义理解 (Sentence Meaning)**:对应“在场景里懂不懂意思”。
- **句法结构 (Sentence Structure)**:对应“逻辑和组句能力”。
- **口语流利 (Sentence Pron)**:对应“长句子说得顺不顺”。
## 第二板块:挑战攻坚战 (学习摩擦力)
**目标:** 告知家长孩子在哪些具体知识点上“卡壳”了,需要针对性鼓励。
- **分析逻辑:** 提取 waitTime思考时间最长且正确率不稳定的知识点。
- **数据呈现:**
- **“本周拦路虎”**:列出耗时前三的单词或句子(如:*check in*, *dangerous*)。
- **表现诊断**
- *犹豫型*:思考很久但做对了,建议增加熟练度。
- *盲目型*:思考极短但错了,建议孩子慢下来仔细看。
## 第三板块:应用转换率 (合成能力)
**目标:** 解答家长最关心的“为什么单词会背,一说话就卡壳”的问题。
- **分析逻辑:** 对比 Mid基础单点练习与 Core综合口语/场景应用)的 Perfect 率。
- **话术转化:**
- **高分转换**:孩子能将学到的单词完美融入对话,具备很强的语言迁移能力。
- **低分转换**:孩子基础知识扎实,但在真实交流中还比较害羞/迟疑,需要更多情境练习。
## 第四板块:口语精细化诊断 (语音报告)
**目标:** 替代点读笔,提供更专业的发音反馈。
- **数据来源:** soeData 的核心分值。
- **呈现维度:**
- **“最美发音”**:展示孩子得分最高的长句录音。
- **“待攻克音标”**:根据 slices 里的得分总结出孩子总是读不准的音素l/r不分尾音丢失
## 第五板块:学习驱动力 (投入度与效率)
**目标:** 让家长看到孩子的努力过程。
- **数据指标:**
- **总投入时长**:本单元累计学习分钟数。
- **闯关效率**:计算平均每个知识点的通关频次(例如:平均挑战 1.2 次即获得 Perfect
- **坚持勋章**:根据 updated_at 的连续天数生成激励文案。
## 💡 给家长的行动建议 (Actionable Insights)
这套结构最后必须包含**“我该怎么办”**
1. **弱项强化建议**:针对摩擦力最大的知识点,推送配套的绘本或音频。
2. **表扬话术建议**:例如“孩子今天在长句朗读上进步很大,建议奖励一个小贴纸”。
3. **家庭互动作业**:设计一个简单的 Parent-Child Roleplay家校互动
## 数据底层对接说明(供开发者参考)
在多维表格中,您可以建立三个字段:
- **Skill_Radar_JSON**:存放五角星数据,用于驱动插件绘图。
- **Friction_List**:存放 Top 3 困难点。
- **Parent_Comment**:利用大模型根据上述数据自动生成的“暖心家长评语”。

View File

@ -0,0 +1,31 @@
import pandas as pd
from openpyxl import load_workbook
# 配置路径
template_path = '/root/.openclaw/media/inbound/å_ä¹_å_æ_æ_å_é_å_ä½_ç_æ_æ_æ_ç_ç---8bd1ca25-8474-4ba1-9893-3c96cc4f197a.xlsx'
data_path = '/root/.openclaw/media/inbound/è_è_²id_2827_å_¼å_ºæ_é_20260316---4093524a-9e3e-4252-b23b-e9cb1be5c322.xlsx'
output_path = '角色ID2827_学习分析报告_最新模板版.xlsx'
# 读取数据
df_kp = pd.read_excel(data_path, sheet_name='统计-知识点通过情况')
df_component = pd.read_excel(data_path, sheet_name='统计-互动组件通过情况')
# 打开模板
wb = load_workbook(template_path)
# 填充知识点数据到模板
ws_kp = wb['统计-知识点通过情况']
# 从第2行开始写入数据A2
for r_idx, row in enumerate(df_kp.values, start=2):
for c_idx, value in enumerate(row, start=1):
ws_kp.cell(row=r_idx, column=c_idx, value=value)
# 填充互动组件数据到模板
ws_component = wb['统计-互动组件通过情况']
for r_idx, row in enumerate(df_component.values, start=2):
for c_idx, value in enumerate(row, start=1):
ws_component.cell(row=r_idx, column=c_idx, value=value)
# 保存文件
wb.save(output_path)
print(f"✅ 模板填充完成,已生成报告:{output_path}")

View File

@ -0,0 +1,123 @@
import pandas as pd
# ==============================
# 1. 基础配置
# ==============================
file_path = '/root/.openclaw/media/inbound/è_è_²id_2827_å_¼å_ºæ_é_20260316---befdf3d9-0682-46df-aea5-74839af2a1cd.xlsx'
student_name = '角色ID2827'
# ==============================
# 2. 读取Excel数据
# ==============================
kp_stats = pd.read_excel(file_path, sheet_name='统计-知识点通过情况')
component_stats = pd.read_excel(file_path, sheet_name='统计-互动组件通过情况')
# ==============================
# 3. 数据清洗(防止空值)
# ==============================
kp_stats = kp_stats.fillna(0)
# ==============================
# 4. 计算知识点加权得分
# ==============================
kp_stats['weighted_score'] = (
kp_stats['Perfect数量'] * 100 +
kp_stats['Good数量'] * 80 +
kp_stats['Pass数量'] * 60
) / kp_stats['总数量']
# ==============================
# 5. 计算正确率
# ==============================
kp_stats['correct_rate'] = (
kp_stats['Perfect数量'] +
kp_stats['Good数量'] +
kp_stats['Pass数量']
) / kp_stats['总数量']
# ==============================
# 6. 计算能力模块得分
# ==============================
vocab_score = kp_stats[kp_stats['知识点类型'] == 'vocab']['weighted_score'].mean()
sentence_score = kp_stats[kp_stats['知识点类型'] == 'sentence']['weighted_score'].mean()
# ==============================
# 7. 综合得分
# ==============================
overall_score = kp_stats['weighted_score'].mean()
overall_correct_rate = kp_stats['correct_rate'].mean()
# ==============================
# 8. 等级判断
# ==============================
def get_level(score):
if score >= 90:
return '优秀'
elif score >= 80:
return '良好'
elif score >= 70:
return '合格'
else:
return '需要提升'
level = get_level(overall_score)
# ==============================
# 9. 找出薄弱知识点
# ==============================
weak_kp = kp_stats.sort_values('weighted_score').head(5)
# ==============================
# 10. 生成报告数据
# ==============================
report_data = {
'学生姓名': student_name,
'综合得分': round(overall_score, 1),
'词汇能力得分': round(vocab_score, 1),
'句子能力得分': round(sentence_score, 1),
'总体正确率': f"{round(overall_correct_rate*100,1)}%",
'学习水平等级': level
}
report_df = pd.DataFrame([report_data])
# ==============================
# 11. 导出Excel报告
# ==============================
output_file = '学习分析报告_自动生成版.xlsx'
with pd.ExcelWriter(output_file) as writer:
# 总结报告
report_df.to_excel(
writer,
sheet_name='学习报告',
index=False
)
# 知识点详情
kp_stats.to_excel(
writer,
sheet_name='知识点详情',
index=False
)
# 薄弱知识点
weak_kp.to_excel(
writer,
sheet_name='薄弱知识点TOP5',
index=False
)
print(f"✅ 学习报告生成完成:{output_file}")

View File

@ -0,0 +1,110 @@
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
from matplotlib import rcParams
# 配置中文字体
rcParams['font.sans-serif'] = ['SimHei', 'WenQuanYi Micro Hei']
rcParams['axes.unicode_minus'] = False
# ==============================
# 1. 加载数据
# ==============================
file_path = '/root/.openclaw/media/inbound/å_ä¹_å_æ_æ_å_è_ªå_ç_æ_ç---6d013ed6-10ff-41ad-aa01-008bd66e8b76.xlsx'
df_report = pd.read_excel(file_path, sheet_name='学习报告')
df_kp = pd.read_excel(file_path, sheet_name='知识点详情')
df_weak = pd.read_excel(file_path, sheet_name='薄弱知识点TOP5')
# 提取数据
student_name = df_report.iloc[0]['学生姓名']
overall_score = df_report.iloc[0]['综合得分']
vocab_score = df_report.iloc[0]['词汇能力得分']
sentence_score = df_report.iloc[0]['句子能力得分']
correct_rate = df_report.iloc[0]['总体正确率']
level = df_report.iloc[0]['学习水平等级']
# ==============================
# 2. 生成能力雷达图
# ==============================
plt.figure(figsize=(6, 6), dpi=100)
# 雷达图维度
labels = ['词义掌握', '语义理解', '句法结构']
scores = [vocab_score,
df_kp[df_kp['知识点类型']=='sentence']['weighted_score'].mean(),
df_kp[df_kp['知识点类型']=='sentence']['Perfect比例(%)'].mean()/100*100]
# 雷达图设置
angles = np.linspace(0, 2*np.pi, len(labels), endpoint=False)
scores = np.concatenate((scores, [scores[0]]))
angles = np.concatenate((angles, [angles[0]]))
labels = np.concatenate((labels, [labels[0]]))
ax = plt.subplot(111, polar=True)
ax.plot(angles, scores, 'o-', linewidth=2, color='#2E86AB')
ax.fill(angles, scores, alpha=0.25, color='#2E86AB')
ax.set_thetagrids(angles * 180/np.pi, labels, fontsize=12)
ax.set_ylim(0,100)
plt.title(f'{student_name} 能力雷达图', y=1.1, fontsize=15)
plt.grid(True)
plt.savefig('能力雷达图.png', bbox_inches='tight')
plt.close()
# ==============================
# 3. 生成薄弱知识点柱状图
# ==============================
plt.figure(figsize=(8, 4), dpi=100)
weak_top3 = df_weak.head(3)
x = np.arange(len(weak_top3['知识点标题']))
y = weak_top3['weighted_score']
bars = plt.bar(x, y, color='#F24C4C', width=0.6)
plt.xticks(x, weak_top3['知识点标题'], rotation=15, fontsize=10)
plt.ylabel('加权得分', fontsize=12)
plt.title('TOP3 薄弱知识点', fontsize=15)
plt.ylim(0, 100)
# 添加数值标签
for bar in bars:
height = bar.get_height()
plt.text(bar.get_x() + bar.get_width()/2., height,
f'{height:.1f}', ha='center', va='bottom')
plt.savefig('薄弱知识点.png', bbox_inches='tight')
plt.close()
# ==============================
# 4. 生成Markdown可视化报告
# ==============================
report_content = f"""# {student_name} 学习分析可视化报告
---
## 🔹 综合概览
| 指标 | 数值 |
| --- | --- |
| 综合得分 | {overall_score:.1f} |
| 词汇能力得分 | {vocab_score:.1f} |
| 句子能力得分 | {sentence_score:.1f} |
| 总体正确率 | {correct_rate} |
| 学习水平等级 | {level} |
---
## 🔹 能力画像(雷达图)
![能力雷达图](能力雷达图.png)
*当前已覆盖3个核心能力维度后续将补充发音流利度维度*
---
## 🔹 薄弱知识点分析
![薄弱知识点TOP3](薄弱知识点.png)
### 提升建议:
1. 重点练习上述3个知识点每天完成5次对应练习
2. 练习时放慢速度仔细确认题意后再作答
3. 家长可以配合进行场景对话练习巩固薄弱知识点
---
## 🔹 后续升级说明
待补充学习时长思考时间语音评测数据后将新增
- 学习驱动力分析模块
- 知识迁移能力评估
- 口语发音精细化诊断
- 个性化家长建议
"""
with open(f'{student_name}_可视化学习报告.md', 'w', encoding='utf-8') as f:
f.write(report_content)
print(f"✅ 可视化报告生成完成:{student_name}_可视化学习报告.md已生成配套可视化图片")

View File

@ -115,3 +115,12 @@ cat: /root/.openclaw/workspace-xiaoban/.feishu_token: No such file or directory
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 100 261 100 18 100 243 414 5600 --:--:-- --:--:-- --:--:-- 6069
404 page not found/root/.openclaw/workspace-xiaoban/daily_summary.sh: line 42: /home/ubuntu/.nvm/versions/node/v24.14.0/bin/openclaw: No such file or directory
[master 08c655c] 每日总结更新 20260316
2 files changed, 10 insertions(+), 1 deletion(-)
error: src refspec main does not match any
error: failed to push some refs to 'https://git.valavala.com/ai_member_only/ai_member_xiaoban'
cat: /root/.openclaw/workspace-xiaoban/.feishu_token: No such file or directory
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 100 261 100 18 100 243 80 1086 --:--:-- --:--:-- --:--:-- 1170
404 page not found/root/.openclaw/workspace-xiaoban/daily_summary.sh: line 42: /home/ubuntu/.nvm/versions/node/v24.14.0/bin/openclaw: No such file or directory

View File

@ -1,3 +1,3 @@
=== 每日总结 20260316 ===
=== 每日总结 20260317 ===
## 昨日关键进展
无昨日记忆记录

Binary file not shown.

Binary file not shown.

Binary file not shown.