v3: README 업데이트 - 프로세스/구조도 추가
This commit is contained in:
174
README.md
174
README.md
@@ -1,82 +1,146 @@
|
||||
# 글벗 Light v1.0
|
||||
# 글벗 Light v3.0
|
||||
|
||||
상시 업무용 HTML 보고서 자동 생성기
|
||||
AI 기반 문서 자동화 시스템 — 9단계 RAG 파이프라인 + 웹 편집기 + HWP 변환
|
||||
|
||||
## 🎯 기능
|
||||
## 🎯 개요
|
||||
|
||||
- **문서 입력**: HTML 파일 업로드 또는 텍스트 직접 입력
|
||||
- **페이지 옵션**: 1페이지 / 2페이지 / N페이지 선택
|
||||
- **Claude API**: 각인된 양식으로 자동 변환
|
||||
- **다운로드**: HTML, PDF 지원
|
||||
- **HWP 변환**: 로컬 스크립트 제공
|
||||
다양한 형식의 입력 문서(PDF, HWP, 이미지, 동영상 등)를 분석하여 표준 HTML 보고서를 자동 생성하고, 웹 편집기로 수정한 뒤 HTML/PDF/HWP로 출력하는 시스템입니다.
|
||||
|
||||
## 🚀 Railway 배포
|
||||
## 📁 프로젝트 구조
|
||||
|
||||
### 1. GitHub에 푸시
|
||||
|
||||
```bash
|
||||
git init
|
||||
git add .
|
||||
git commit -m "Initial commit"
|
||||
git remote add origin https://github.com/YOUR_USERNAME/geulbeot-light.git
|
||||
git push -u origin main
|
||||
```
|
||||
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
|
||||
```
|
||||
|
||||
### 2. Railway 연동
|
||||
## ⚙️ 프로세스 플로우
|
||||
|
||||
1. [Railway](https://railway.app) 접속
|
||||
2. "New Project" → "Deploy from GitHub repo"
|
||||
3. 저장소 선택
|
||||
4. 환경변수 설정:
|
||||
- `ANTHROPIC_API_KEY`: Claude API 키
|
||||
- `SECRET_KEY`: 임의의 비밀 키
|
||||
```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
|
||||
|
||||
### 3. 배포 완료
|
||||
subgraph OUTPUT["📤 Output"]
|
||||
direction TB
|
||||
I --> J["step8: 콘텐츠 생성\n(Gemini API)"]
|
||||
J --> K["step9: HTML 생성\n(Gemini API)"]
|
||||
end
|
||||
|
||||
Railway가 자동으로 빌드 및 배포합니다.
|
||||
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
|
||||
# 가상환경 생성
|
||||
python -m venv venv
|
||||
source venv/bin/activate # Windows: venv\Scripts\activate
|
||||
|
||||
# 패키지 설치
|
||||
pip install -r requirements.txt
|
||||
|
||||
# 환경변수 설정
|
||||
export ANTHROPIC_API_KEY="your-api-key"
|
||||
|
||||
# 실행
|
||||
python app.py
|
||||
```
|
||||
|
||||
http://localhost:5000 접속
|
||||
|
||||
## 📁 프로젝트 구조
|
||||
## 🔑 API 키 설정
|
||||
|
||||
```
|
||||
geulbeot-light/
|
||||
├── app.py # Flask 메인 앱
|
||||
├── templates/
|
||||
│ ├── index.html # 메인 페이지
|
||||
│ └── hwp_guide.html # HWP 변환 가이드
|
||||
├── prompts/
|
||||
│ └── system_prompt.txt # Claude 시스템 프롬프트
|
||||
├── requirements.txt
|
||||
├── Procfile
|
||||
├── railway.json
|
||||
└── README.md
|
||||
`api_keys.json` 파일을 프로젝트 루트에 생성:
|
||||
|
||||
```json
|
||||
{
|
||||
"CLAUDE_API_KEY": "sk-ant-...",
|
||||
"GPT_API_KEY": "sk-proj-...",
|
||||
"GEMINI_API_KEY": "AIzaSy..."
|
||||
}
|
||||
```
|
||||
|
||||
## 🎨 각인된 양식
|
||||
> ⚠️ `api_keys.json`은 `.gitignore`에 포함되어 Git에 올라가지 않습니다.
|
||||
|
||||
- A4 인쇄 최적화 (210mm × 297mm)
|
||||
- Noto Sans KR 폰트
|
||||
- Navy 계열 색상 (#1a365d 기본)
|
||||
- 구성요소: page-header, lead-box, section, data-table, bottom-box 등
|
||||
## 📝 v1 → v3 변경 이력
|
||||
|
||||
| 버전 | 변경 내용 |
|
||||
|------|----------|
|
||||
| v1 | Flask + Claude API 기획서 생성기 (12파일, 422줄) |
|
||||
| v2 | 웹 편집기 추가 (editor.js, editor.css) |
|
||||
| v3 | 9단계 RAG 파이프라인 + HWP 변환 추가 (40파일+, 6000줄+) |
|
||||
|
||||
## 📝 라이선스
|
||||
|
||||
Private - GPD 내부 사용
|
||||
Private — GPD 내부 사용
|
||||
Reference in New Issue
Block a user