Skip to content

Latest commit

 

History

History
523 lines (416 loc) · 11.3 KB

File metadata and controls

523 lines (416 loc) · 11.3 KB

XJTU-SlideNote 演示指南

🎬 完整演示流程

本指南提供完整的产品演示流程,确保所有核心功能都能顺利展示。


准备工作

1. 环境检查

# 检查系统依赖
ffmpeg -version
pdftoppm -version
python3 --version  # 需要 >= 3.10

2. 启动后端服务

cd backend
./start.sh

# 或手动启动
source venv/bin/activate
uvicorn app.main:app --reload --port 8000

验证启动成功:

curl http://localhost:8000/health
# 应返回: {"status":"healthy","app":"XJTU-SlideNote"}

3. 准备演示数据

演示视频准备:

  • 使用 10-15 分钟的课程录播视频(MP4 格式)
  • 确保视频中包含清晰的 PPT 画面
  • 建议准备 2-3 个不同课程的视频

演示场景一:视频提取与 PPT 生成

步骤 1: 创建课程目录结构

API 调用(或通过前端界面):

# 1. 创建学期
curl -X POST http://localhost:8000/api/semesters \
  -H "Content-Type: application/json" \
  -d '{
    "name": "2024秋季学期",
    "order": 1
  }'

# 记录返回的 semester_id,例如:{"id": 1, ...}
# 2. 创建课程
curl -X POST http://localhost:8000/api/courses \
  -H "Content-Type: application/json" \
  -d '{
    "semester_id": 1,
    "name": "操作系统原理",
    "description": "介绍操作系统的基本概念和核心机制",
    "order": 1
  }'

# 记录返回的 course_id,例如:{"id": 1, ...}
# 3. 创建课时
curl -X POST http://localhost:8000/api/lessons \
  -H "Content-Type: application/json" \
  -d '{
    "course_id": 1,
    "name": "第1讲-操作系统概述",
    "order": 1
  }'

# 记录返回的 lesson_id,例如:{"id": 1, ...}

步骤 2: 上传视频并提取 PPT

# 上传本地视频文件
curl -X POST http://localhost:8000/api/extract/upload \
  -F "file=@/path/to/your/lecture_video.mp4" \
  -F "lesson_id=1" \
  -F "scene_threshold=0.3" \
  -F "dedup_threshold=10"

# 返回示例:
# {
#   "task_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
#   "status": "submitted",
#   "message": "File uploaded and task submitted"
# }

步骤 3: 监控任务进度

# 使用返回的 task_id 查询进度
curl http://localhost:8000/api/tasks/a1b2c3d4-e5f6-7890-abcd-ef1234567890

# 任务状态示例:
# {
#   "task_id": "...",
#   "status": "processing",  # pending -> processing -> completed
#   "progress": 60,
#   "message": "Generating PDF...",
#   "created_at": "2024-12-14T10:00:00"
# }

演示要点:

  • ⏱️ 展示处理速度:15分钟视频约20-30秒完成
  • 📊 展示进度更新:从 0% -> 100%
  • ✅ 展示最终结果:生成的 PDF 页数

步骤 4: 查看提取结果

# 1. 获取课时下的文件列表
curl http://localhost:8000/api/lessons/1/files

# 返回示例:
# [
#   {
#     "id": 1,
#     "lesson_id": 1,
#     "filename": "slides.pdf",
#     "file_type": "slides",
#     "file_size": 2048576,
#     "created_at": "2024-12-14T10:05:00"
#   }
# ]
# 2. 预览 PDF
# 在浏览器打开:
http://localhost:8000/api/files/1/preview

演示要点:

  • 📄 PDF 质量清晰,分辨率高
  • 📑 页面完整,无遗漏
  • 🔍 文本可搜索(如果启用了 OCR)

演示场景二:AI 智能笔记生成

步骤 1: 选择讲解风格

# 获取可用的讲解风格列表
curl http://localhost:8000/api/ai/styles

# 返回示例:
# [
#   {
#     "key": "beginner",
#     "name": "零基础入门模式",
#     "description": "假设完全没有接触过这门课,从最基础的概念开始讲解"
#   },
#   {
#     "key": "keypoints",
#     "name": "重点提炼模式",
#     "description": "假设已有初步了解,重点讲解核心概念和易混淆点"
#   },
#   {
#     "key": "exam",
#     "name": "考前速记模式",
#     "description": "以考点为导向,提炼关键结论和公式"
#   }
# ]

步骤 2: 生成笔记(流式输出)

使用 curl 观察流式生成:

curl -N -X POST http://localhost:8000/api/ai/notes \
  -H "Content-Type: application/json" \
  -d '{
    "file_id": 1,
    "style": "beginner"
  }'

# 输出示例(实时流式):
# data: # 操作系统概述学习笔记
# data: 
# data: ## 1. 什么是操作系统?
# data: 
# data: 操作系统(Operating System,OS)是计算机系统中最重要的系统软件...
# data: 
# data: 💡 **关键理解**:操作系统就像是计算机的"大管家"...
# ...
# event: done
# data: completed

演示要点:

  • 🔄 实时流式输出,体验流畅
  • 📝 内容结构化,层次清晰
  • 💡 包含"关键理解"等辅助记忆点
  • ✅ 自动保存为 Markdown 文件

步骤 3: 查看生成的笔记

# 再次查看课时文件列表
curl http://localhost:8000/api/lessons/1/files

# 新增的笔记文件:
# [
#   {
#     "id": 1,
#     "filename": "slides.pdf",
#     "file_type": "slides",
#     ...
#   },
#   {
#     "id": 2,
#     "filename": "notes_beginner.md",
#     "file_type": "notes",
#     "file_size": 5120,
#     ...
#   }
# ]
# 预览笔记内容
curl http://localhost:8000/api/files/2/preview

演示场景三:AI 智能练习题生成

步骤 1: 生成练习题

curl -N -X POST http://localhost:8000/api/ai/exercises \
  -H "Content-Type: application/json" \
  -d '{
    "file_id": 1,
    "include_notes": true,
    "config": {
      "choice_count": 5,
      "short_answer_count": 3,
      "difficulty": "medium"
    }
  }'

# 输出示例(流式):
# data: ## 一、选择题
# data: 
# data: ### 1. [单选] 操作系统的主要功能不包括以下哪一项?
# data: A. 进程管理
# data: B. 内存管理
# data: C. 网页设计
# data: D. 文件管理
# data: 
# data: ### 2. [多选] 下列关于操作系统的描述正确的是?
# ...
# data: 
# data: ## 参考答案与解析
# data: 
# data: ### 选择题答案
# data: 
# data: 1. 【答案】C
# data:    【解析】操作系统的核心功能包括进程管理、内存管理、文件管理和设备管理...

演示要点:

  • 📋 题型多样:选择题、简答题
  • 📊 难度可控:easy/medium/hard
  • 📖 解析详细:包含解题思路和知识点回顾
  • ✅ 自动保存为 Markdown

演示场景四:完整学习闭环展示

文件组织结构展示

# 查看完整的文件系统结构
tree backend/storage/users/1/

# 输出示例:
# users/1/
# └── 2024秋季学期/
#     └── 操作系统原理/
#         └── 第1讲-操作系统概述/
#             ├── slides.pdf            # ①提取的PPT
#             ├── notes_beginner.md     # ②AI生成的笔记
#             └── exercises_medium.md   # ③AI生成的练习题

演示要点:

  • 📁 三级目录结构清晰:学期 → 课程 → 课时
  • 📚 学习资料完整:课件 + 笔记 + 练习题
  • 🔄 形成学习闭环:看 PPT → 读笔记 → 做习题

演示场景五:配置管理展示

查看和更新 LLM 配置

# 1. 查看当前 LLM 配置
curl http://localhost:8000/api/config/llm

# 返回示例:
# {
#   "provider": "openai",
#   "model_name": "gpt-4o-mini",
#   "max_tokens": 4096,
#   "temperature": 0.7,
#   "has_api_key": true,
#   "base_url": null
# }
# 2. 切换到其他提供商(例如 DeepSeek)
curl -X PUT http://localhost:8000/api/config/llm \
  -H "Content-Type: application/json" \
  -d '{
    "provider": "deepseek",
    "model_name": "deepseek-chat",
    "api_key": "sk-xxxxx",
    "temperature": 0.5
  }'

演示要点:

  • 🔧 配置灵活,支持多种 LLM 提供商
  • 💰 成本可控,可选择不同价格的模型
  • ⚙️ 参数可调,temperature 影响输出稳定性

高级演示场景

场景六:批量处理多个视频

# 创建多个课时
for i in {1..3}; do
  curl -X POST http://localhost:8000/api/lessons \
    -H "Content-Type: application/json" \
    -d "{
      \"course_id\": 1,
      \"name\": \"${i}\",
      \"order\": ${i}
    }"
done

# 依次提交视频提取任务
# 后台并行处理(max_workers=2)

演示要点:

  • 🚀 异步处理,不阻塞 API
  • 🔄 并行处理多个任务
  • 📊 任务列表管理

场景七:自定义提示词模板

# 创建自定义笔记模板
curl -X POST http://localhost:8000/api/ai/prompts \
  -H "Content-Type: application/json" \
  -d '{
    "name": "考研重点模式",
    "template_type": "notes",
    "content": "你是一位考研辅导专家。请提炼出适合考研复习的重点内容,标注高频考点...",
    "description": "专为考研复习设计的笔记风格"
  }'

# 使用自定义模板生成笔记
curl -N -X POST http://localhost:8000/api/ai/notes \
  -H "Content-Type: application/json" \
  -d '{
    "file_id": 1,
    "style": "custom",
    "custom_prompt": "你是一位考研辅导专家..."
  }'

性能指标展示

实际测试数据

指标 测试结果
15分钟视频提取 约 25-30 秒
45分钟视频提取 约 1-1.5 分钟
OCR识别50页PPT 约 30 秒
AI生成3000字笔记 约 20 秒
生成10道习题 约 15 秒

常见演示问题处理

问题 1: 视频处理失败

可能原因:

  • 视频格式不支持
  • 场景检测阈值设置不当

解决方案:

# 调整阈值重新提交
curl -X POST http://localhost:8000/api/extract/upload \
  -F "file=@video.mp4" \
  -F "lesson_id=1" \
  -F "scene_threshold=0.4"  # 提高阈值,减少提取帧数

问题 2: AI 生成超时

可能原因:

  • LLM API 限流
  • 网络连接问题

解决方案:

# 检查 API 状态
curl http://localhost:8000/api/config/llm

# 查看任务错误信息
curl http://localhost:8000/api/tasks/{task_id}

问题 3: OCR 识别错误

可能原因:

  • PPT 图片质量差
  • 字体过小或模糊

解决方案:

# 使用更高分辨率的视频源
# 或调整 OCR 参数

演示脚本总结

完整演示时长估算

阶段 时长 备注
环境准备 2 分钟 提前完成
场景一 3-5 分钟 视频提取
场景二 3-4 分钟 笔记生成
场景三 3-4 分钟 练习题生成
场景四 1-2 分钟 文件结构展示
场景五 1-2 分钟 配置管理
Q&A 5 分钟 回答问题

总计: 约 15-20 分钟

演示核心要点

  1. 突出性能优势

    • 视频处理速度快(10倍提升)
    • AI 生成流式输出,体验流畅
  2. 强调用户价值

    • 解决 PPT 获取难题
    • 提供个性化学习辅导
    • 形成完整学习闭环
  3. 展示技术亮点

    • 两级抽帧策略
    • OCR 高准确率(PaddleOCR)
    • LLM 多提供商支持
  4. 体现产品完整性

    • 从视频到 PPT
    • 从 PPT 到笔记
    • 从笔记到习题
    • 完整的知识萃取与认知辅助流程

演示成功检查清单

  • 后端服务正常启动
  • 系统依赖全部就绪(FFmpeg, Poppler)
  • LLM API Key 已配置
  • 演示视频已准备(10-15分钟)
  • API 文档可访问(http://localhost:8000/docs)
  • 测试用例已验证通过
  • 演示脚本已熟悉
  • 问答准备充分

祝演示成功!🎉