From f2a7e2be9596d42273bc7b939608fdf9f4e63cd5 Mon Sep 17 00:00:00 2001 From: Hermes CI Fix Date: Sat, 18 Jul 2026 18:01:45 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=AF=BC=E5=85=A5CMA=E5=AE=8C=E6=95=B4?= =?UTF-8?q?=E6=96=87=E6=A1=A3(14=E7=AB=A0)=E5=88=B0=E7=9F=A5=E8=AF=86?= =?UTF-8?q?=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/scripts/import_cma_knowledge.py | 60 +++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 backend/scripts/import_cma_knowledge.py diff --git a/backend/scripts/import_cma_knowledge.py b/backend/scripts/import_cma_knowledge.py new file mode 100644 index 00000000..6a50d940 --- /dev/null +++ b/backend/scripts/import_cma_knowledge.py @@ -0,0 +1,60 @@ +#!/usr/bin/env python3 +"""将CMA战略地图完整文档导入知识库""" +import pymysql, re + +DB = dict(host='127.0.0.1', port=3306, user='cma_user', password='cma_pass_2026', database='cma', charset='utf8mb4') + +DOC = "/root/CMA_Strategy_Map_完整分析.md" + +# 读取文档 +with open(DOC) as f: + content = f.read() + +# 按章节分割(## 开头) +chapters = re.split(r'\n(?=## \d+\.)', content) + +articles = [] +for i, ch in enumerate(chapters): + if not ch.strip(): + continue + # 提取标题 + title_match = re.match(r'##\s+(.+?)(?:\n|$)', ch) + title = title_match.group(1).strip() if title_match else f"第{i+1}部分" + # 提取摘要 + summary = "" + for line in ch.split('\n')[:5]: + clean = line.strip() + if clean and not clean.startswith('#') and not clean.startswith('>') and len(clean) > 10: + summary = clean[:200] + break + + articles.append({ + "title": title[:200], + "summary": summary, + "content": ch.strip(), + "category": "CMA完整文档", + "icon": "📘", + "related_page": "/knowledge", + "sort_order": i + }) + +conn = pymysql.connect(**DB) +cur = conn.cursor() + +# 先删除同分类旧文章 +cur.execute("DELETE FROM knowledge_articles WHERE category = 'CMA完整文档'") +print(f"已清理旧文章") + +inserted = 0 +for a in articles: + cur.execute( + "INSERT INTO knowledge_articles (title, summary, content, category, icon, related_page, sort_order) VALUES (%s,%s,%s,%s,%s,%s,%s)", + (a['title'], a['summary'], a['content'], a['category'], a['icon'], a['related_page'], a['sort_order']) + ) + inserted += 1 + print(f" [{inserted}] {a['title'][:50]}...") + +conn.commit() +cur.close() +conn.close() +print(f"\n✅ 导入完成: {inserted} 篇文章")