# main.py import gradio as gr from analyzer import analyze_teacher_dashboard from cluster_insight import cluster_and_visualize # ================== LLM 预留接口(未来接入通义千问)================== # main.py → analyze_report 内 from qwen_api import call_qwen def generate_teaching_advice(sankey_b64, cluster_stats): # 1. 构造 Prompt(结构化、专业) prompt = f""" 你是一名GIS实验教学专家,基于以下分析结果,生成教学优化方案: 【桑基图分析】 - 学生反馈从 s1→s4 的主要流向:核密度 → 参数设置 → 应用场景 - 最粗路径:核密度分析 → 搜索半径选择 → 城市规划应用 【聚类分析】 """ for s in cluster_stats[:3]: # 取 Top 3 聚类 prompt += f"- 聚类 {s['cluster_id']}:{s['keyword']}({s['size']}条,占{s['ratio']:.1%})\n" prompt += f" 代表句:{s['rep_sentence'][:100]}\n" prompt += """ 【要求】 1. 诊断核心教学痛点(3条) 2. 提出针对性优化措施(微课/演示/作业) 3. 设计 1 个 2 分钟微课脚本(标题+3步演示) 4. 建议 1 个课后作业(验证学生掌握) 【输出格式】 # 教学优化方案 ## 1. 核心痛点 ## 2. 优化措施 ## 3. 微课脚本 ## 4. 课后作业 """ # 2. 调用通义千问 advice = call_qwen(prompt) return f"
{advice}"
# ================== Gradio 界面 ==================
def analyze_report(file):
if not file:
return "请上传 Excel 文件", None
try:
# 1. 分析 → 桑基图
sankey_b64 = analyze_teacher_dashboard(excel_path = file.name)
# 2. 聚类图
cluster_b64, cluster_stats = cluster_and_visualize( excel_path=file.name )
# print(cluster_b64)
# print(cluster_stats)
# 3. 生成教学建议
advice = generate_teaching_advice(sankey_b64, cluster_stats)
# 4. 聚类统计表格
stats_table = """
| 聚类 | 主题关键词 | 反馈数 | 占比 | 代表句 |
|---|---|---|---|---|
| {s['cluster_id']} | {s['keyword']} | {s['size']} | {s['ratio']:.1%} | {s['rep_sentence'][:60]}... |
GIS 教学智能体 · 循证教学优化
EGISInsight © 2025 | 从数据到教学内容改革