글벗 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

⚙️ 프로세스 플로우

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

🖥️ 로컬 실행

pip install -r requirements.txt
python app.py

http://localhost:5000 접속

🔑 API 키 설정

api_keys.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 내부 사용

Description
No description provided
Readme 3 MiB
Languages
Python 76.9%
HTML 17.6%
JavaScript 4.8%
CSS 0.7%