136 lines
4.6 KiB
Python
136 lines
4.6 KiB
Python
import os
|
|
import re
|
|
import uuid
|
|
import sys
|
|
from datetime import datetime
|
|
|
|
# UTF-8 Output support
|
|
if sys.stdout.encoding != 'utf-8':
|
|
import io
|
|
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
|
|
|
|
base_dir = r"e:\Wiki\2nd"
|
|
raw_dir = os.path.join(base_dir, "00_Raw", "2026-04-20")
|
|
|
|
# List of files to process
|
|
batch_files = [
|
|
"Algorithmic-Governance.md",
|
|
"Allocation Timeline.md",
|
|
"Alpha Blending.md",
|
|
"AlphaZero Strategy.md",
|
|
"Amazon-AWS-Formal-Verification.md",
|
|
"Ambient Contexts.md",
|
|
"Ambient Declarations.md",
|
|
"Americans-with-Disabilities-Act-ADA.md",
|
|
"Amygdala Hyperactivity.md",
|
|
"Analyze runtime performance.md",
|
|
"ANGLE.md",
|
|
"AODA-Accessibility-for-Ontarians-with-Disabilities-Act.md",
|
|
"API-Contract-Definition.md",
|
|
"API-First Architecture.md",
|
|
"API-First-Design.md",
|
|
"Apple Human Interface Guidelines.md",
|
|
"Apple Vision Pro Ecosystem.md",
|
|
"AppSec (ø̼ ).md",
|
|
"Architectural-Constraint-Enforcement.md"
|
|
]
|
|
|
|
mapping = {
|
|
"Algorithmic-Governance.md": "Sociology & Tech",
|
|
"Allocation Timeline.md": "Memory & Systems",
|
|
"Alpha Blending.md": "Graphics & Performance",
|
|
"AlphaZero Strategy.md": "AI & Games",
|
|
"Amazon-AWS-Formal-Verification.md": "Software Reliability",
|
|
"Ambient Contexts.md": "Programming & Language",
|
|
"Ambient Declarations.md": "Programming & Language",
|
|
"Americans-with-Disabilities-Act-ADA.md": "Design & Experience",
|
|
"Amygdala Hyperactivity.md": "Psychology & Behavior",
|
|
"Analyze runtime performance.md": "Web & Performance",
|
|
"ANGLE.md": "Graphics & Performance",
|
|
"AODA-Accessibility-for-Ontarians-with-Disabilities-Act.md": "Design & Experience",
|
|
"API-Contract-Definition.md": "Software Architecture",
|
|
"API-First Architecture.md": "Software Architecture",
|
|
"API-First-Design.md": "Software Architecture",
|
|
"Apple Human Interface Guidelines.md": "Design & Experience",
|
|
"Apple Vision Pro Ecosystem.md": "Metaverse & Devices",
|
|
"AppSec (ø̼ ).md": "Security",
|
|
"Architectural-Constraint-Enforcement.md": "Software Architecture"
|
|
}
|
|
|
|
def wikify(filename):
|
|
raw_path = os.path.join(raw_dir, filename)
|
|
if not os.path.exists(raw_path):
|
|
return
|
|
|
|
try:
|
|
with open(raw_path, "r", encoding="utf-8") as f:
|
|
content = f.read()
|
|
except UnicodeDecodeError:
|
|
try:
|
|
with open(raw_path, "r", encoding="cp949") as f:
|
|
content = f.read()
|
|
except:
|
|
return
|
|
|
|
title_match = re.search(r'^#\s*\[\[(.*?)\]\]', content, re.M)
|
|
if not title_match:
|
|
title_match = re.search(r'^\[\[(.*?)\]\]', content, re.M)
|
|
|
|
title = title_match.group(1) if title_match else filename.replace(".md", "")
|
|
sub_folder = mapping.get(filename, "Uncategorized")
|
|
category_path = f"10_Wiki/💡 Topics/{sub_folder}"
|
|
|
|
summary_match = re.search(r'##?\s*📌\s*Brief Summary\n(.*?)(?=\n##|$)', content, re.S)
|
|
summary = summary_match.group(1).strip() if summary_match else "핵심 요약 작업 진행 중"
|
|
|
|
core_match = re.search(r'##?\s*📖\s*Core Content\n(.*?)(?=\n##|$)', content, re.S)
|
|
core = core_match.group(1).strip() if core_match else "본문 상세 구성 진행 중"
|
|
|
|
conn_match = re.search(r'##?\s*🔗\s*Knowledge Connections\n(.*?)(?=\n##|$)', content, re.S)
|
|
conn = conn_match.group(1).strip() if conn_match else ""
|
|
|
|
doc_id = f"P-REINFORCE-{uuid.uuid4().hex[:6].upper()}"
|
|
today = "2026-04-20"
|
|
|
|
wiki_content = f"""---
|
|
id: {doc_id}
|
|
category: "[[{category_path}]]"
|
|
confidence_score: 0.95
|
|
tags: []
|
|
last_reinforced: {today}
|
|
github_commit: "[P-Reinforce] Mega Batch - Wikified {title}"
|
|
---
|
|
|
|
# [[{title}]]
|
|
|
|
## 📌 한 줄 통찰 (The Karpathy Summary)
|
|
> {summary}
|
|
|
|
## 📖 구조화된 지식 (Synthesized Content)
|
|
{core}
|
|
|
|
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
|
|
- **과거 데이터와의 충돌:** 지식 자산화 및 기존 네트워크 연동 단계.
|
|
- **정책 변화:** {sub_folder} 카테고리의 전문성 확보 및 링크 밀도 최적화.
|
|
|
|
## 🔗 지식 연결 (Graph)
|
|
{conn}
|
|
- Raw Source: [[00_Raw/2026-04-20/{filename}]]
|
|
---
|
|
"""
|
|
|
|
target_dir = os.path.join(base_dir, category_path.replace("/", os.sep))
|
|
if not os.path.exists(target_dir):
|
|
os.makedirs(target_dir)
|
|
|
|
safe_title = re.sub(r'[^\w\s\(\)\[\]-]', '', title).strip()
|
|
target_path = os.path.join(target_dir, f"{safe_title}.md")
|
|
|
|
with open(target_path, "w", encoding="utf-8") as f:
|
|
f.write(wiki_content)
|
|
print(f"Processed: {filename}")
|
|
|
|
if __name__ == "__main__":
|
|
for f in batch_files:
|
|
wikify(f)
|