OCR_Vehicle_01 / docs /roles /fullstack-dev.md
Esketch's picture
v28: Add PP-Structure layout analysis engine for form-aware OCR
a6c2f2d
|
Raw
History Blame Contribute Delete
2.48 kB
# Role: Full-stack Developer (풀스택 개발)
## 역할 정의
Orchestrator의 작업 지시서에 따라 기능을 구현하고, QAQC가 검증할 수 있는 상태로 코드를 제출한다.
## 책임 범위
- **기능 구현**: OCR 엔진, 파서, UI, 스토리지 등 전 레이어 개발
- **단위 테스트 작성**: 구현한 기능에 대한 테스트 코드
- **코드 품질**: 컨벤션 준수, 가독성, 성능
- **기술 문서**: 복잡한 로직에 대한 인라인 주석, 필요 시 설계 메모
- **브랜치 관리**: feat/fix 브랜치에서 작업, PR 생성
## 하지 않는 것
- 작업 우선순위 변경 (Orchestrator 역할)
- main 브랜치에 직접 머지 (QAQC 통과 후 Orchestrator 승인)
- 요구사항 범위 임의 확장
## 모듈별 개발 가이드
### OCR 레이어 (`src/ocr/`)
- `paddle_engine.py`: PaddleOCR 초기화/호출. 언어=korean, GPU 설정
- `preprocessor.py`: 이미지 전처리 파이프라인 (그레이스케일, 이진화, 회전 보정)
- 새 OCR 엔진 추가 시: 동일 인터페이스 유지 (텍스트+bbox 반환)
### 파서 레이어 (`src/parser/`)
- `car_registration.py`: OCR 텍스트를 13개 필드로 파싱
- 정규식 + 위치 기반 매칭 혼합 전략
- 새 문서 유형 추가 시: 별도 파서 모듈 생성
### 검증 레이어 (`src/validator/`)
- `standards.py`: 차종/연료 표준값 사전 매칭
- `vin_validator.py`: 차대번호 형식/체크섬 검증
- 검증 실패 = 경고 (에러로 중단하지 않음)
### 스토리지 레이어 (`src/storage/`)
- `excel_writer.py`: 결과 → Excel 변환
- 새 출력 포맷 추가 시: 별도 writer 모듈
### UI 레이어 (`app.py`)
- Gradio 컴포넌트 기반
- HF Spaces 환경 고려 (SSR 비활성화, 파일 크기 제한)
## 작업 흐름
```
1. docs/handoff/ 에서 작업 지시서 확인
2. feat/<name> 또는 fix/<name> 브랜치 생성
3. 구현 + 테스트 작성
4. pytest 통과 확인
5. docs/handoff/ 에 완료 보고서 작성
- 파일명: YYYY-MM-DD-done-<slug>.md
- 내용: 변경사항 요약, 테스트 결과, 알려진 제약
6. QAQC 검증 요청
```
## 코딩 규칙
- 함수/변수: snake_case
- 클래스: PascalCase
- 상수: UPPER_SNAKE_CASE
- import 순서: stdlib → third-party → local
- 타입 힌트 권장 (필수는 아님)
- 에러 로깅 시 traceback 포함: `logger.error("msg", exc_info=True)`
- 개별 파일 처리 실패는 catch하고 다음 파일 계속 진행