Excel κ³ κ° μλ΄ λ°μ΄ν°λ₯Ό Agent SOP λ¬Έμ λ° ALF κ΅¬μΆ ν¨ν€μ§λ‘ μλ λ³ννλ 7λ¨κ³ AI νμ΄νλΌμΈ
- λͺ©μ : Excel κ³ κ° μλ΄ λ°μ΄ν° β μ¬μ¬μ© κ°λ₯ν Agent SOP λ¬Έμ + ALF(AI μ±λ΄) λμ ν¨ν€μ§ + κ³ κ°μ¬ 곡μ μ© λ°°ν¬ μλλ¦¬μ€ μλ μμ±
- λ°©λ²: 7λ¨κ³ νμ΄νλΌμΈ (Clustering β Extraction β SOP Generation β Flowchart Generation β ALF κ΅¬μΆ ν¨ν€μ§ β ALF λ¬Έμ λΆλ¦¬ β λ°°ν¬ μλ리μ€)
- μμ μκ°: Stage 1-4 Quick ~15λΆ / Standard ~25λΆ / Comprehensive ~30λΆ, Stage 5 ~20-35λΆ, Stage 6-7 ~10λΆ
- λ€κ΅μ΄ μ§μ: νκ΅μ΄ (νκ΅μ΄), μΌλ³Έμ΄ (ζ₯ζ¬θͺ)
- κΈ°μ μ€ν:
- Stage 1 (Python): λ‘컬 BGE-m3-ko μλ² λ©(κΈ°λ³Έ) + Upstage Solar fallback / K-Means ν΄λ¬μ€ν°λ§ / Prism Gateway Claude νκΉ (κΈ°λ³Έ) + Upstage Solar-mini fallback
- Stage 2 (LLM): ν¨ν΄ μΆμΆ + FAQ μμ± + HT/TS λΆλ₯
- Stage 3 (LLM): Agent SOP λ¬Έμ μμ± (λ³λ ¬ μ²λ¦¬ κ°λ₯)
- Stage 4 (LLM + Mermaid): νλ‘μ°μ°¨νΈ μλ μμ± (νμ, SVG μ ν)
- Stage 5 (LLM + Python): ALF κ΅¬μΆ ν¨ν€μ§ β κ·μΉ μ΄μ(νλ₯΄μλΒ·λ§ν¬Β·μλ κ°μ΄λλΌμΈΒ·κ³΅κ° λ§€ν), RAG νλͺ©, μλν λΆμ(4-Layer ALF κ΄μ¬ λͺ¨λΈ), μ±ν¨μ μ°λ λΆλ₯(μ΄μ§μ΄λλ―Ό/μΉ΄ν24/μ¬λ°©λ·), ROI κ³μ°, API μ건 μ μμ
- Stage 6 (LLM): ALF λ±λ‘μ© κ°λ³ νμΌ λΆλ¦¬ (κ·μΉ 9κ° + RAG ν ν½λ³ λ¬Έμ)
- Stage 7 (LLM): κ³ κ°μ¬ 곡μ μ© λ°°ν¬ μλλ¦¬μ€ & QA μΈνΈ (HTML/Markdown, Notion λ°ν μ ν)
- Claude Code β https://claude.ai/code
- Upstage API ν€ λλ Anthropic API ν€
chmod +x setup.sh
./setup.shpython3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
cp .env.example .env
# .env νμΌμ UPSTAGE_API_KEY λλ ANTHROPIC_API_KEY μΆκ°μ΄ ν΄λλ₯Ό Claude Codeλ‘ μ΄κ³ μλ λ©μμ§λ₯Ό μ λ ₯:
setup.sh νμΌμ λ³΄κ³ νκ²½ μ€μ μ ν΄μ€. .env.exampleμ 볡μ¬ν΄μ .env νμΌμ λ§λ€κ³ , API ν€ μ
λ ₯ μμΉλ₯Ό μλ΄ν΄μ€.
μΌλ³Έμ΄ κ°μ΄λ: SETUP_GUIDE_JA.md μ°Έμ‘°
/userchat-to-sop-pipeline
- ν λ²μ Stage 1-7 μλ μ€ν
- κ° λ¨κ³λ³ 리뷰 μ§μ μ 곡
- Stage κ° μλ μ°κ²° λ° κ²μ¦
/stage1-clustering # Stage 1: ν΄λ¬μ€ν°λ§
/stage2-extraction # Stage 2: ν¨ν΄ μΆμΆ
/stage3-sop-generation # Stage 3: SOP μμ±
/stage4-flowchart-generation # Stage 4: νλ‘μ°μ°¨νΈ μμ±
/stage5-sop-to-guide # Stage 5: ALF κ΅¬μΆ ν¨ν€μ§ μμ±
/stage6-alf-document-export # Stage 6: ALF λ¬Έμ κ°λ³ νμΌ λΆλ¦¬
/stage7-deployment-scenario # Stage 7: λ°°ν¬ μλλ¦¬μ€ & QA μΈνΈ
/upload-rules # κ·μΉ Markdown μΌκ΄ μ
λ‘λ (Channel.io)
/upload-documents # RAG λ¬Έμ μΌκ΄ μ
λ‘λ (Channel.io Desk API)
/settings-task # Task JSON μ±λν‘ μ
λ‘λ(μμ±/μμ )
/evaluate-rag # λ΄μ RAG μλ΅ νμ§ μλ ν
μ€νΈ (Playwright)
/evaluate-task # Task JSON νμ§ νκ°
/analyze-bots # Non-ALF λ΄ νλ λΆμ (컀λ²λ¦¬μ§/μμ€μ»¬λ μ΄μ
)
# κΈ°λ³Έ μ€ν (1000κ° μν)
python3 scripts/pipeline.py --input data/user_chat.xlsx
# μ 체 λ°μ΄ν° μ€ν
python3 scripts/pipeline.py --input data/user_chat.xlsx --sample all
# K κ° μ§μ
python3 scripts/pipeline.py --input data/user_chat.xlsx --k 20
# μ΅μ K νμ
python3 scripts/pipeline.py --input data/user_chat.xlsx --k-range 10,15,20,25
# νκΉ
건λλ°κΈ° (μλ νκΉ
μ©)
python3 scripts/pipeline.py --input data/user_chat.xlsx --skip-tagging
# μΆλ ₯ κ²½λ‘ μ§μ
python3 scripts/pipeline.py --input data/input.xlsx --output results/company --prefix company_v1Mermaid CLI μμ΄λ λ§ν¬λ€μ΄ νλ‘μ°μ°¨νΈλ μμ±λ©λλ€. SVGκ° νμν κ²½μ°:
npm install -g @mermaid-js/mermaid-cliresults/{company}/
βββ {company}_clustered.xlsx # Stage 1: μλ³Έ λ°μ΄ν° + ν΄λ¬μ€ν° μ 보
βββ {company}_tags.xlsx # Stage 1: ν΄λ¬μ€ν° λ©νλ°μ΄ν°
βββ {company}_messages.csv # Stage 1: μ€μ λν ν΄ (Stage 2μ©)
βββ analysis_report.md # Stage 1: λΆμ 리ν¬νΈ
β
βββ 02_extraction/ # Stage 2
β βββ patterns.json # μΆμΆλ ν¨ν΄ + HT/TS λΆλ₯
β βββ patterns_enriched.json # μν μλ² λ© (Stage 3 μ΅μ ν)
β βββ faq.json # FAQ μ
β βββ response_strategies.json # μλ΅ μ λ΅
β βββ keywords.json # ν€μλ λΆλ₯체κ³
β βββ extraction_summary.md # μΆμΆ μμ½
β
βββ 03_sop/ # Stage 3 + 4
β βββ TS_001_*.sop.md # Troubleshooting SOP
β βββ HT_001_*.sop.md # How-To SOP
β βββ TS_001_*_FLOWCHART.md # Mermaid νλ‘μ°μ°¨νΈ (TS)
β βββ TS_001_*_flowchart.svg # SVG μ΄λ―Έμ§ (TS, μ ν)
β βββ HT_001_*_FLOWCHART.md # Mermaid νλ‘μ°μ°¨νΈ (HT)
β βββ HT_001_*_flowchart.svg # SVG μ΄λ―Έμ§ (HT, μ ν)
β βββ metadata.json # SOP λ©νλ°μ΄ν°
β βββ generation_summary.md # μμ± μμ½
β βββ flowchart_generation_summary.md # νλ‘μ°μ°¨νΈ μμ½
β
βββ 05_sales_report/ # Stage 5: ALF ν¨ν€μ§ + λΆμ/λ³΄κ³ μ
β βββ alf_setup/
β β βββ rules_draft.md # κ·μΉ μ΄μ (μμ€ν
ν둬ννΈ)
β β βββ rag_items.md # RAG μ§μ DB λ±λ‘ νλͺ©
β βββ tasks/ # νμ€ν¬ νλ‘μ°μ°¨νΈ
β β βββ TASK{N}_{μ΄λ¦}.md # νμ€ν¬λ³ Mermaid νλ‘μ°μ°¨νΈ
β β βββ TASK{N}_{μ΄λ¦}.svg # SVG μ΄λ―Έμ§ (μ ν)
β βββ analysis/
β β βββ cross_analysis.json # κ΅μ°¨λΆμ μμ λ°μ΄ν°
β β βββ heatmap.png # μλ΄μ£Όμ Γ λνμ ν ννΈλ§΅
β β βββ automation_analysis.md # μλν κ°λ₯μ± λΆμ
β βββ sales_report_config.json # ROI κ³μ° μ€μ
β βββ {company}_analysis_report.md # μ΅μ’
λΆμ 리ν¬νΈ (Rosa νλ μμν¬)
β
βββ 06_alf_documents/ # Stage 6: ALF λ±λ‘μ© κ°λ³ νμΌ
β βββ rules/ # κ°λ³ κ·μΉ νμΌ 9κ° (β€2,000μ)
β β βββ 01_tone_manner.md
β β βββ ... (02~09)
β βββ rag/ # RAG μ§μ λ¬Έμ (ν ν½λ³)
β βββ {ν ν½}.md
β
βββ 07_deployment/ # Stage 7: λ°°ν¬ μλλ¦¬μ€ & QA
β βββ deployment_qa_set.html # κ³ κ°μ¬ 곡μ μ©
β βββ deployment_qa_set.md # λ‘컬 보κ΄μ©
β
βββ {company}_api_requirements.md # Stage 5: API μ건 μ μμ
βββ {company}_alf_implementation_guide.md # Stage 5: μ΅μ’
ALF λμ
κ°μ΄λ
.
βββ .claude/ # Claude Code μ€μ
β βββ settings.json # κΈ°λ³Έ κΆν μ€μ
β βββ settings.local.json # λ‘컬 κΆν μ€λ²λΌμ΄λ
β βββ skills/ # Claude Code Skills
β βββ stage1-clustering/ # Stage 1 Skill
β βββ stage2-extraction/ # Stage 2 Skill
β βββ stage3-sop-generation/ # Stage 3 Skill
β βββ stage4-flowchart-generation/ # Stage 4 Skill
β βββ stage5-sop-to-guide/ # Stage 5 Skill
β βββ userchat-to-sop-pipeline/ # ν΅ν© νμ΄νλΌμΈ Skill
βββ agent-sops/ # Agent SOP μ μμ
β βββ stage1-clustering.sop.md
β βββ stage2-extraction.sop.md
β βββ stage3-sop-generation.sop.md
β βββ stage4-flowchart-generation.sop.md
β βββ userchat-to-sop-pipeline.sop.md
βββ scripts/ # Python μ€ν¬λ¦½νΈ
β βββ pipeline.py # Stage 1 μ§μ
μ
β βββ config.py # API ν€, κΈ°λ³Έ μ€μ
β βββ lang_config.py # λ€κ΅μ΄ μ€μ (ν/μΌ)
β βββ enrich_patterns.py # Stage 2.5: μν μλ² λ©
β βββ analyze_dialogs.py # Stage 5: λνμ ν λΆλ₯
β βββ generate_heatmap.py # Stage 5: κ΅μ°¨λΆμ ννΈλ§΅
β βββ generate_sales_report.py # Stage 5: μμ
λ³΄κ³ μ μμ±
β βββ extract_alf_setup_data.py # Stage 5: ALF μΈν
λ°μ΄ν° μΆμΆ
β βββ clustering/ # ν΄λ¬μ€ν°λ§ λͺ¨λ
β βββ data_loader.py # Excel λ‘λ© (first_msg μ°μ μνλ§)
β βββ text_enhancer.py # ν
μ€νΈ ν₯μ (κ°μν)
β βββ embeddings.py # μλ² λ© (λ³λ ¬ + μΊμ±)
β βββ clustering.py # K-Means ν΄λ¬μ€ν°λ§
β βββ tagging.py # LLM μλ νκΉ
β βββ output.py # Excel μ μ₯
βββ templates/ # μΆλ ₯ ν
νλ¦Ώ
β βββ HT_template.md # How-To SOP ν
νλ¦Ώ
β βββ TS_template.md # Troubleshooting SOP ν
νλ¦Ώ
β βββ FLOWCHART_template.md # νλ‘μ°μ°¨νΈ ν
νλ¦Ώ
β βββ ALF_RULES_DRAFT_template.md # κ·μΉ μ΄μ ν
νλ¦Ώ
β βββ RAG_ITEMS_template.md # RAG νλͺ© ν
νλ¦Ώ
β βββ AUTOMATION_ANALYSIS_template.md # μλν λΆμ ν
νλ¦Ώ
β βββ TASK_template.md # νμ€ν¬ νλ‘μ°μ°¨νΈ ν
νλ¦Ώ
β βββ API_REQUIREMENTS_template.md # API μ건 μ μμ ν
νλ¦Ώ
β βββ ALF_PACKAGE_template.md # ALF λμ
κ°μ΄λ ν
νλ¦Ώ
β βββ SALES_REPORT_template.md # λΆμ 리ν¬νΈ ν
νλ¦Ώ
β βββ examples/ # μμ SOP νμΌ
βββ rules/ # νμ κ·κ²©
β βββ agent-sop-format.md # Agent SOP νμ€ νμ
βββ lang/ # λ€κ΅μ΄ μ€μ
β βββ ko.yaml # νκ΅μ΄
β βββ ja.yaml # μΌλ³Έμ΄
βββ docs/ # νλ‘μ νΈ λ¬Έμ
βββ data/ # μ
λ ₯ Excel νμΌ
βββ results/ # μΆλ ₯ κ²°κ³Ό
βββ cache/ # μλ² λ© μΊμ
Excel Input (κ³ κ° μλ΄ λ°μ΄ν°)
β
Stage 1: Clustering (Python)
β μλ² λ©: λ‘컬 BGE-m3-ko μ°μ β Upstage Solar fallback
β K-Means ν΄λ¬μ€ν°λ§ (silhouette κΈ°λ° μ΅μ K μλ μ ν)
β νκΉ
: Prism Gateway Claude μ°μ β Upstage Solar-mini fallback
β clustered.xlsx, tags.xlsx, messages.csv, analysis_report.md
β
Stage 2: Pattern Extraction (LLM)
β μ€μ μν κΈ°λ° ν¨ν΄/FAQ/ν€μλ μΆμΆ + HT/TS μλ λΆλ₯
β patterns.json, faq.json, keywords.json, response_strategies.json
β
Stage 3: SOP Generation (LLM)
β HT/TS ν
νλ¦Ώ κΈ°λ° Agent SOP λ¬Έμ μμ±
β *.sop.md, metadata.json
β
Stage 4: Flowchart Generation (LLM + Mermaid)
β SOP ꡬ쑰 λΆμ β Mermaid λ€μ΄μ΄κ·Έλ¨ + SVG λ³ν
β *_FLOWCHART.md, *_flowchart.svg
β
Stage 5: ALF Implementation Package (LLM + Python)
β κ·μΉ μ΄μ, RAG νλͺ©, κ΅μ°¨λΆμ ννΈλ§΅, μλν λΆμ
β ROI κ³μ°, νμ€ν¬ νλ‘μ°μ°¨νΈ, API μ건, ALF λμ
κ°μ΄λ
β
Stage 6: ALF Document Export (LLM)
β rules_draft.md β κ°λ³ κ·μΉ νμΌ 9κ° (β€2,000μ)
β rag_items.md β ν ν½λ³ RAG μ§μ λ¬Έμ (ALF λ±λ‘ μ§ν)
β
Stage 7: Deployment Scenario (LLM)
β μλ΄ μΉ΄ν
κ³ λ¦¬ Γ ν΄κ²° λ°©μ(RAG/Task) λ§€ν + μΉ΄ν
κ³ λ¦¬λ³ ν
μ€νΈ 쿼리
β deployment_qa_set.html / .md (+ Notion λ°ν μ ν)
ν΅ν© νμ΄νλΌμΈ (Stage 1-7 μλ μ€ν, κΆμ₯)
- ν λ²μ μ 체 7λ¨κ³ νμ΄νλΌμΈ μ€ν
- Stage κ° μλ μ°κ²° λ° κ²μ¦
- κ° λ¨κ³λ³ 리뷰 μ§μ μ 곡 (auto_proceed μ΅μ )
- νλΌλ―Έν° 컀μ€ν°λ§μ΄μ μ΄μ (Quick/Standard/Comprehensive)
λνν Stage 1 μ€ν - νλΌλ―Έν° μ ν κ°μ΄λ μ 곡
- λ°μ΄ν° νμΌ μλ μ€μΊ λ° μ ν
- νμ¬λͺ μλ μΆμΆ
- μλ² λ©: λ‘컬 BGE-m3-ko μ°μ β Upstage Solar fallback (MPS/CUDA/CPU μλ μ ν)
- νκΉ : Prism Gateway Claude μ°μ β Upstage Solar-mini fallback
- LLM Fallback μλ κ°μ§ (β₯20%)
- λ°°μΉ μ²λ¦¬ (50κ°μ©)
μ€μ μν κΈ°λ° ν¨ν΄ μΆμΆ + HT/TS λΆλ₯
- μΆμΈ‘ κΈμ§, 20κ° μν μ§μ λΆμ
- FAQ, μλ΅ μ λ΅, ν€μλ μλ μμ±
- patterns_enriched.json μμ± (Stage 3 μ΅μ νμ©)
Agent SOP λ¬Έμ μλ μμ±
- HT/TS ν νλ¦Ώ κΈ°λ° μμ±
- μ€μ κ³ κ° νν, μλ΅ μμ ν¬ν¨
- λ―Όκ° μ 보 μΌλ°ν (νλ μ΄μ€νλ μ¬μ©)
Mermaid νλ‘μ°μ°¨νΈ μλ μμ±
- TS/HT λͺ¨λ μ§μ (all, ts_only, ht_only μ΅μ )
- μμ μ½λ© (Success/Warning/Error/Info)
- VSCode λ΄ SVG μλ λ λλ§ μ§μ
ALF κ΅¬μΆ ν¨ν€μ§ μμ± (Stage 1-4 μ°μΆλ¬Ό κΈ°λ°)
- κ·μΉ μ΄μ β νλ₯΄μλ / λ§ν¬ κ·μΉ / μλ κ°μ΄λλΌμΈ 8κ° / κ°μ λ³ κ³΅κ° λ§€ν
- RAG μ§μ DB νλͺ©
- λνμ ν κ΅μ°¨λΆμ ννΈλ§΅
- μλν κ°λ₯μ± λΆμ β 4-Layer ALF κ΄μ¬ λͺ¨λΈ (μμ ν΄κ²° / μΉμΈλ Έλ / μ΄λ² μλ΄ / μ£Όμ λΆλ₯)
- ROI κ³μ° β
monthly_volumeμ Stage 1 λ°μ΄ν°(μλ³Έ 건μ Γ· λ μ§ λ²μ)μμ μλ μΆμ - νμ€ν¬ νλ‘μ°μ°¨νΈ β
app_functions=trueμ μ±ν¨μ μ°λ λΆλ₯(μ΄μ§μ΄λλ―Ό/μΉ΄ν24/μ¬λ°©λ· ν¨μ μ€ν κΈ°λ°, μ±ν¨μ/μ½λλ Έλ/νΌν©) - API μ건 μ μμ + μ΅μ’ ALF λμ κ°μ΄λ
ALF λ±λ‘μ© κ°λ³ νμΌ λΆλ¦¬
rules_draft.mdβ 9κ° κ·μΉ νμΌ (κ° β€2,000μ, νλ₯΄μλΒ·λ§ν¬Β·μλΒ·κ³΅κ° λ± μΉ΄ν κ³ λ¦¬λ³)rag_items.mdβ ν ν½λ³ RAG μ§μ λ¬Έμ
κ³ κ°μ¬ 곡μ μ© λ°°ν¬ μλλ¦¬μ€ & QA μΈνΈ
- μλ΄ μΉ΄ν κ³ λ¦¬ β ν΄κ²° λ°©μ(RAG/Task) β λ°°ν¬ λ¨κ³ λ§€ν
- μΉ΄ν κ³ λ¦¬λ³ ν μ€νΈ 쿼리 μλ μμ±
- HTML + Markdown μΆλ ₯, Notion λ°ν μ ν
λ¬Έμ ν΄κ²° νλ‘μΈμ€ β μΌμ΄μ€λ³ λΆκΈ°, μμ¬κ²°μ νΈλ¦¬, μμ€μ»¬λ μ΄μ
- A/S μμ², μ ν λΆλ, λ°°μ‘ λ¬Έμ , νλΆ/κ΅ν μ²λ¦¬
μ μ°¨ μλ΄ νλ‘μΈμ€ β μμ°¨μ λ¨κ³, μ 보 μ λ¬, μ νμλΉμ€
- μ¬μ©λ² μλ΄, μ£Όλ¬Έ/λ°°μ‘ μ‘°ν, νμκ°μ , μ 립κΈ/μΏ ν° μλ΄
Stage 2μμ κ° ν΄λ¬μ€ν°λ₯Ό μλμΌλ‘ HT/TSλ‘ λΆλ₯νκ³ , Stage 3μμ ν΄λΉ ν νλ¦Ώμ μ μ©ν©λλ€.
| κ΅¬λΆ | κΈ°μ | μ©λ |
|---|---|---|
| μλ² λ© | dragonkue/BGE-m3-ko (λ‘컬, κΈ°λ³Έ) / Upstage Solar embedding-passage (fallback) |
ν μ€νΈ 벑ν°ν |
| ν΄λ¬μ€ν°λ§ | scikit-learn K-Means | μλ΄ λ°μ΄ν° λΆλ₯ |
| LLM | Claude (Prism Gateway μ°μ , Anthropic API μ§μ νΈμΆ κ°λ₯) / Upstage Solar-mini (fallback) | νκΉ , ν¨ν΄ μΆμΆ, SOP μμ±, λΆμ |
| νλ‘μ°μ°¨νΈ | Mermaid.js + @mermaid-js/mermaid-cli | μκ°ν |
| λ°μ΄ν° μ²λ¦¬ | pandas, numpy, openpyxl | Excel I/O |
| μκ°ν | matplotlib | ννΈλ§΅ μμ± |
| λ³λ ¬ μ²λ¦¬ | ThreadPoolExecutor | μλ² λ©, λ°°μΉ μ²λ¦¬ |
| μΊμ± | pickle (νμΌ κΈ°λ°) | μλ² λ© μ¬μ¬μ© |
# μλ² λ© (Stage 1) β λ λ€ μ ν
# - λ‘컬 BGE-m3-koκ° κΈ°λ³Έ (sentence-transformers μ€μΉ μ μλ μ¬μ©)
# - λ―Έμ€μΉ μ μλ ν€λ‘ Upstage Solar API fallback
UPSTAGE_API_KEY=up_... # Solar μλ² λ© + Solar-mini νκΉ
fallback
# LLM (Stage 1 νκΉ
+ Stage 2-7) β μλ μ€ νλ μ ν, Prism κΆμ₯
PRISM_API_KEY=... # Prism Gateway (Channel λ΄λΆ)
PRISM_BASE_URL=https://prism.ch.dev
ANTHROPIC_MODEL=anthropic/claude-sonnet-4-20250514
ANTHROPIC_API_KEY=sk-ant_... # λλ Claude API μ§μ μ¬μ©Prism Gateway: μ¬λ΄ Channel νκ²½μμ Anthropic SDKλ₯Ό
base_urlλ‘ μ°ν νΈμΆνκΈ° μν κ²μ΄νΈμ¨μ΄.PRISM_API_KEYκ° μ€μ λμ΄ μμΌλ©΄ μλμΌλ‘ Prism κ²½μ λ‘ μ νλ©λλ€. λ‘컬 μλ² λ©:pip install sentence-transformersμ BGE-m3-koκ° μλ νμ±νλ©λλ€ (Mac MPS / CUDA / CPU μλ μ ν). λ―Έμ€μΉ νκ²½μμλUPSTAGE_API_KEYλ‘ μλ fallback.
μλ² λ© μΊμ μ΄μ:
rm -rf cache/κ°μνκ²½ λ¬Έμ :
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txtMermaid CLI μμ λ: λ§ν¬λ€μ΄ νλ‘μ°μ°¨νΈλ μ μ μμ±λλ©°, SVGλ§ μλ΅λ©λλ€.
κ·Έ μΈ μλ¬: μλ¬ λ©μμ§λ₯Ό Claude Codeμ λΆμ¬λ£μΌλ©΄ μλμΌλ‘ ν΄κ²°μ± μ μ μν©λλ€.
μ΄μμ PRμ μΈμ λ νμν©λλ€!