Files
test/README.md

146 lines
5.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 글벗 Light v3.0
AI 기반 문서 자동화 시스템 — 9단계 RAG 파이프라인 + 웹 편집기 + HWP 변환
## 🎯 개요
다양한 형식의 입력 문서(PDF, HWP, 이미지, 동영상 등)를 분석하여 표준 HTML 보고서를 자동 생성하고, 웹 편집기로 수정한 뒤 HTML/PDF/HWP로 출력하는 시스템입니다.
## 📁 프로젝트 구조
```
geulbeot_3rd/
├── app.py # Flask 메인 서버 (579줄)
├── api_config.py # API 키 로더
├── converters/
│ ├── pipeline/ # 9단계 RAG 파이프라인
│ │ ├── router.py # 분기 판단 (긴/짧은 문서)
│ │ ├── step1_convert.py # 파일→PDF 변환 (783줄)
│ │ ├── step2_extract.py # 텍스트/이미지 추출 (788줄)
│ │ ├── step3_domain.py # 도메인 분석 (265줄)
│ │ ├── step4_chunk.py # 청킹 (356줄)
│ │ ├── step5_rag.py # RAG 임베딩 (141줄)
│ │ ├── step6_corpus.py # 코퍼스 생성 (231줄)
│ │ ├── step7_index.py # 인덱싱 + 목차 생성 (504줄)
│ │ ├── step8_content.py # 콘텐츠 생성 (1020줄)
│ │ └── step9_html.py # HTML 생성 (1248줄)
│ ├── html_to_hwp.py # 보고서→HWP 변환 (572줄)
│ └── html_to_hwp_briefing.py # 기획서→HWP 변환 (572줄)
├── prompts/
│ ├── step1_extract.txt # 구조 추출 프롬프트
│ ├── step1_5_plan.txt # 배치 계획 프롬프트
│ └── step2_generate.txt # HTML 생성 프롬프트
├── static/
│ ├── css/editor.css # 편집기 스타일
│ └── js/editor.js # 편집기 기능
├── templates/
│ ├── index.html # 메인 UI
│ └── hwp_guide.html # HWP 변환 가이드
├── output/assets/ # 이미지 에셋
├── requirements.txt
├── Procfile
└── railway.json
```
## ⚙️ 프로세스 플로우
```mermaid
flowchart TB
subgraph INPUT["📥 Input"]
direction TB
A["🗂️ 문서 입력\nPDF, HWP, 이미지, 동영상"] --> B["step1: 파일 변환\nPDF 통일"]
B --> C["step2: 텍스트/이미지 추출\n(GPT API)"]
C --> D{"router.py\n분량 판단\n5000자 기준"}
D -->|"긴 문서"| E["step3: 도메인 분석"]
D -->|"짧은 문서"| H
E --> F["step4: 청킹"]
F --> G["step5: RAG 임베딩"]
G --> H["step6: 코퍼스 생성"]
H --> I["step7: 인덱싱 + 목차 생성\n(GPT API)"]
end
subgraph OUTPUT["📤 Output"]
direction TB
I --> J["step8: 콘텐츠 생성\n(Gemini API)"]
J --> K["step9: HTML 생성\n(Gemini API)"]
end
subgraph EDIT["✏️ Edit"]
direction TB
K --> M["웹 편집기\neditor.js"]
K --> N["AI 편집\n/refine (Claude API)"]
end
subgraph EXPORT["📦 Export"]
direction TB
M & N --> P["HTML / PDF"]
M & N --> Q["HWP 변환\nhtml_to_hwp.py"]
end
```
## 🌐 API 라우트
| 라우트 | 메서드 | 기능 |
|--------|--------|------|
| `/` | GET | 메인 페이지 |
| `/generate` | POST | 기획서 생성 (1단계→1.5단계→2단계) |
| `/generate-report` | POST | 보고서 생성 (9단계 파이프라인) |
| `/refine` | POST | AI 전체 수정 |
| `/refine-selection` | POST | AI 부분 수정 |
| `/export-hwp` | POST | HWP 변환 |
| `/download/html` | POST | HTML 다운로드 |
| `/download/pdf` | POST | PDF 다운로드 |
| `/health` | GET | 서버 상태 확인 |
## 🤖 활용 AI
| 단계 | AI | 역할 |
|------|-----|------|
| step2 (추출) | GPT | PDF에서 텍스트/이미지 메타데이터 추출 |
| step7 (목차) | GPT | 인덱싱 및 목차 자동 생성 |
| step8 (콘텐츠) | Gemini | 섹션별 본문 초안 생성 |
| step9 (HTML) | Gemini | 최종 HTML 보고서 생성 |
| 기획서 생성 | Claude | HTML 구조 추출 + 변환 |
| AI 편집 | Claude | 피드백 반영 수정 |
## 🎨 글벗 표준 HTML 양식
- A4 인쇄 최적화 (210mm × 297mm)
- Noto Sans KR 폰트
- Navy 계열 색상 (#1a365d 기본)
- 구성: page-header, lead-box, section, data-table, bottom-box, footer
## 🖥️ 로컬 실행
```bash
pip install -r requirements.txt
python app.py
```
http://localhost:5000 접속
## 🔑 API 키 설정
`api_keys.json` 파일을 프로젝트 루트에 생성:
```json
{
"CLAUDE_API_KEY": "sk-ant-...",
"GPT_API_KEY": "sk-proj-...",
"GEMINI_API_KEY": "AIzaSy..."
}
```
> ⚠️ `api_keys.json`은 `.gitignore`에 포함되어 Git에 올라가지 않습니다.
## 📝 v1 → v3 변경 이력
| 버전 | 변경 내용 |
|------|----------|
| v1 | Flask + Claude API 기획서 생성기 (12파일, 422줄) |
| v2 | 웹 편집기 추가 (editor.js, editor.css) |
| v3 | 9단계 RAG 파이프라인 + HWP 변환 추가 (40파일+, 6000줄+) |
## 📝 라이선스
Private — GPD 내부 사용