보험서류 자동 검증 시스템이 클린 아키텍처로 전면 리팩토링되었습니다. 기존 기능은 유지하면서 코드 구조를 대폭 개선하여 유지보수성과 확장성을 크게 향상시켰습니다.
📱 Presentation Layer (app/)
↓ depends on
🎮 Application Layer (controllers/)
↓ depends on
🧠 Domain Layer (domain/)
↑ implements
🔧 Infrastructure Layer (infrastructure/)
pdfdiff/
├── main.py # 🚀 메인 진입점
├── app/ # 📱 Presentation Layer
│ ├── gui/ # UI 컴포넌트
│ │ ├── main_window.py # 메인 윈도우
│ │ └── components/ # 재사용 UI 컴포넌트
│ └── controllers/ # 🎮 Application Controllers
│ ├── template_controller.py
│ └── validation_controller.py
├── domain/ # 🧠 Domain Layer (Business Logic)
│ ├── entities/ # 핵심 엔티티
│ │ ├── roi.py
│ │ ├── template.py
│ │ ├── document.py
│ │ └── validation_result.py
│ ├── services/ # 도메인 서비스
│ │ ├── template_service.py
│ │ └── validation_service.py
│ └── repositories/ # 리포지토리 인터페이스
│ ├── template_repository.py
│ ├── document_repository.py
│ └── validation_repository.py
├── infrastructure/ # 🔧 Infrastructure Layer
│ ├── repositories/ # 리포지토리 구현체
│ │ ├── json_template_repository.py
│ │ └── file_document_repository.py
│ ├── services/ # 외부 서비스 래퍼
│ │ ├── pdf_service.py
│ │ ├── ocr_service.py
│ │ └── cv_service.py
│ └── config/ # 설정 관리
│ └── settings.py
├── shared/ # 🛠️ 공통 유틸리티
│ ├── exceptions.py # 커스텀 예외
│ ├── constants.py # 상수
│ ├── types.py # 타입 정의
│ └── utils.py # 공통 유틸리티
├── tests/ # 🧪 테스트
│ ├── unit/
│ └── integration/
├── resources/ # 📦 리소스
│ └── vendor/tesseract/ # OCR 엔진
├── clean_backup/ # 🗂️ 기존 코드 백업
└── requirements.txt
python main.py
python main.py --debug
python main.py --version
- 의존성 역전: 상위 계층이 하위 계층에 의존하지 않음
- 관심사 분리: UI, 비즈니스 로직, 데이터 접근이 명확히 분리
- 단일 책임: 각 클래스가 하나의 명확한 책임만 가짐
- 확장성: 새로운 기능 추가가 용이한 구조
- 불필요한 파일 제거: 중복, 임시, 테스트 파일들을 백업 폴더로 이동
- 명확한 네이밍: 파일과 클래스 이름이 역할을 명확히 표현
- 일관된 구조: 모든 모듈이 동일한 패턴을 따름
- 타입 힌트: 모든 함수와 클래스에 타입 정보 추가
- 예외 처리: 커스텀 예외 클래스로 명확한 오류 처리
- 로깅 시스템: 체계적인 로깅 및 디버깅 지원
- 설정 관리: 중앙화된 설정 관리 시스템
- ROI: 검증 영역 정보 (좌표, 검증방식, 임계값)
- Template: ROI 집합 및 메타데이터
- Document: PDF 문서 정보
- ValidationResult: 검증 결과 및 통계
- TemplateService: 템플릿 생성, 수정, 검증
- ValidationService: PDF 검증 로직 및 결과 분석
- TemplateController: 템플릿 관리 UI 제어
- ValidationController: 검증 프로세스 제어
# Python 3.8+ 필요
python --version
# 가상환경 생성 (권장)
python -m venv venv
source venv/bin/activate # Linux/Mac
# 또는
venv\Scripts\activate # Windows
pip install -r requirements.txt
resources/vendor/tesseract/
폴더에 Tesseract 실행파일 배치resources/vendor/tesseract/tessdata/
폴더에 언어팩 배치- eng.traineddata (영어)
- kor.traineddata (한글)
python main.py
- 메인 화면에서 "📝 템플릿 생성 및 편집" 클릭
- 원본 PDF 선택 및 템플릿 이름 입력
- 검증할 영역(ROI) 드래그로 지정
- 검증 방식 선택 (OCR/Contour)
- 템플릿 저장
- 메인 화면에서 "🔍 서류 검증 실행" 클릭
- 저장된 템플릿 선택
- 검증할 PDF 파일 또는 폴더 선택
- 검증 실행 및 결과 확인
python -m pytest tests/unit/ -v
python -m pytest tests/integration/ -v
python -m pytest -v
- Domain Layer에 엔티티/서비스 추가
- Infrastructure Layer에 구현체 추가
- Application Layer에 컨트롤러 로직 추가
- Presentation Layer에 UI 컴포넌트 추가
- 타입 힌트 필수 사용
- docstring 작성 권장
- 예외 처리 명확히 구현
- 로깅 적절히 활용
--debug
플래그로 상세 로그 확인settings.json
에서 디버그 설정 조정logs/
폴더의 로그 파일 확인
- 클린 아키텍처 적용
- 기존 기능 마이그레이션
- 테스트 코드 작성
- 웹 인터페이스 (FastAPI + React)
- 데이터베이스 지원 (SQLite/PostgreSQL)
- 배치 처리 스케줄러
- REST API 제공
- 머신러닝 기반 ROI 자동 감지
- 딥러닝 OCR 엔진 통합
- 이상 탐지 알고리즘
- 사용자 권한 관리
- 감사 로그 시스템
- 클러스터 배포 지원
- 모니터링 대시보드
- 순환 복잡도: < 10
- 코드 중복: < 5%
- 테스트 커버리지: > 80%
- 타입 커버리지: > 95%
- 단일 PDF 검증: < 5초
- 메모리 사용량: < 500MB
- 동시 처리: 최대 5개 PDF
- 응답 시간: < 1초 (UI)
- 포크 및 브랜치 생성
- 기능 구현 및 테스트
- 코드 리뷰 요청
- 문서 업데이트
- 이슈 트래커: GitHub Issues
- 문서: 프로젝트 Wiki
- 이메일: [email protected]
Copyright (c) 2025 PDF Validator System All Rights Reserved
[기존] enhanced_launcher.py → [신규] main.py
[기존] src/template_manager.py → [신규] app/controllers/template_controller.py
[기존] src/pdf_validator_gui.py → [신규] app/controllers/validation_controller.py
# 기존 방식
from src.template_manager import TemplateManager
# 새로운 방식
from app.controllers.template_controller import TemplateController
templates.json
→ 동일 (호환성 유지)- 새로 추가:
settings.json
(애플리케이션 설정)
모든 기존 템플릿은 그대로 사용 가능합니다. 추가 마이그레이션 작업이 필요하지 않습니다.
🎉 PDF Validator System v3.0이 더욱 강력하고 유지보수 가능한 시스템으로 업그레이드되었습니다!