Files
012-kaopeilian/知识库/开发记录/资料34知识点清理完成报告.md
111 998211c483 feat: 初始化考培练系统项目
- 从服务器拉取完整代码
- 按框架规范整理项目结构
- 配置 Drone CI 测试环境部署
- 包含后端(FastAPI)、前端(Vue3)、管理端

技术栈: Vue3 + TypeScript + FastAPI + MySQL
2026-01-24 19:33:28 +08:00

5.2 KiB
Raw Permalink Blame History

资料34知识点清理完成报告

操作时间2025-10-17
操作类型:物理删除
资料ID34
资料名称:美拉美测试-小.pdf


操作结果

删除统计

  • 删除记录数6条
  • 剩余记录数0条
  • 操作状态 成功

数据验证

SELECT COUNT(*) FROM knowledge_points WHERE material_id = 34;
-- 结果0

确认资料34的所有知识点已从数据库中完全清除。


🔧 提供的SQL脚本

1. 快速删除脚本

文件:/root/aiedu/清空资料知识点.sql

最简单用法

DELETE FROM knowledge_points WHERE material_id = 34;

2. Dify工作流集成指南

文件:/root/aiedu/Dify工作流-知识点管理SQL.md

包含:

  • 多种删除方式(单个、批量、条件删除)
  • Dify工作流集成方案SQL节点、HTTP请求、Python代码
  • 完整的工作流示例
  • 错误处理和监控
  • 常见问题解答

⚠️ 前端显示87个知识点的问题

当前数据库状态

资料ID: 34
知识点数量: 0
资料状态: 正常(未删除)

可能原因

1. 前端缓存(最可能)

现象:数据库已删除,但前端显示旧数据

解决方法

// 清除缓存并重新加载
localStorage.clear()
sessionStorage.clear()
location.reload(true)  // 强制刷新

// 或在代码中强制刷新
await loadMaterialKnowledgePoints(materialId, { forceRefresh: true })

2. 浏览器缓存

解决方法

  • Ctrl + Shift + RWindowsCmd + Shift + RMac强制刷新
  • 或打开浏览器开发者工具,勾选"Disable cache"后刷新

3. 查看的不是资料34

验证方法

  • 检查URL中的资料ID是否为34
  • 查看页面标题或面包屑导航

4. API缓存

验证方法

# 直接调用API查看返回
curl "https://aiedu.ireborn.com.cn/api/v1/courses/materials/34/knowledge-points" \
  -H "Authorization: Bearer {token}"

排查步骤

  1. 打开浏览器开发者工具F12
  2. 查看Network标签
  3. 刷新页面
  4. 找到知识点API请求
  5. 查看响应数据

预期响应:

{
  "code": 200,
  "data": [],  // ← 应该是空数组
  "message": "获取知识点列表成功"
}

如果响应是87个知识点说明

  • API缓存
  • 或查询了错误的资料ID

🎯 Dify工作流使用指南

推荐流程

1. 清空旧知识点
   ↓
   SQL: DELETE FROM knowledge_points WHERE material_id = {{material_id}};
   
2. Dify AI分析
   ↓
   调用Dify工作流分析文档
   
3. 保存新知识点
   ↓
   POST /api/v1/courses/{course_id}/knowledge-points/batch

SQL节点配置

Dify工作流中的SQL执行节点

节点名称: 清空旧知识点
节点类型: Code
语言: Python

代码:
import pymysql

material_id = {{material_id}}

conn = pymysql.connect(
    host='120.79.247.16',
    port=3307,
    user='root',
    password='nj861021',
    database='kaopeilian',
    charset='utf8mb4'
)

cursor = conn.cursor()
cursor.execute("DELETE FROM knowledge_points WHERE material_id = %s", (material_id,))
deleted_count = cursor.rowcount
conn.commit()
conn.close()

return {
    "success": True,
    "deleted_count": deleted_count,
    "message": f"已清空资料 {material_id} 的 {deleted_count} 个旧知识点"
}

或使用HTTP Request节点

如果后端提供了批量删除API

节点名称: 清空旧知识点
节点类型: HTTP Request
URL: /api/v1/courses/materials/{{material_id}}/knowledge-points/batch
方法: DELETE
Headers:
  Authorization: Bearer {{api_token}}

📊 数据库当前状态

课程1的资料统计

资料ID: 34
资料名称: 美拉美测试-小.pdf
知识点数量: 0
创建时间: 2025-10-17 07:19:36

验证命令

-- 检查资料34的知识点
SELECT COUNT(*) as count FROM knowledge_points WHERE material_id = 34;
-- 结果0

-- 检查资料信息
SELECT id, name, course_id, file_type 
FROM course_materials 
WHERE id = 34 AND is_deleted = 0;
-- 结果1条记录资料本身存在只是没有知识点

🔗 相关文件

  1. SQL脚本/root/aiedu/清空资料知识点.sql
  2. Dify集成指南/root/aiedu/Dify工作流-知识点管理SQL.md
  3. 删除问题分析/root/aiedu/知识点删除问题分析.md

📝 后续操作

1. 清除前端缓存

访问课程编辑页面强制刷新浏览器查看是否还显示87个知识点。

2. Dify重新生成

在Dify工作流中触发重新分析生成新的知识点。

3. 验证新知识点

-- 查看新生成的知识点
SELECT id, name, type, source, created_at 
FROM knowledge_points 
WHERE material_id = 34 
ORDER BY id DESC;

操作总结

  • 已成功删除资料34的所有旧知识点6条
  • 数据库验证剩余0条
  • 提供了可复用的SQL脚本
  • 提供了Dify工作流集成方案
  • 待解决前端显示87个知识点的问题可能是缓存

数据库连接信息

主机: 120.79.247.16
端口: 3307
数据库: kaopeilian
用户: root
密码: nj861021

操作状态 完成