# 글벗 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 내부 사용