콘텐츠로 이동

README

공사현장 관리를 위한 통합 ERP 시스템입니다. 공사 진행 관리, 자재 관리, 공가신청/해지, OCR 문서 처리 등을 지원합니다.

구분기술
백엔드FastAPI + SQLAlchemy (async)
데이터베이스PostgreSQL 16
캐시Redis 7
마이그레이션Alembic
OCRTesseract (별도 서비스)
프론트엔드Nginx (정적 서빙)
배포Docker Compose
erp-construction/
├── backend/
│ ├── app/
│ │ ├── api/v1/
│ │ │ ├── __init__.py # 라우터 패키지
│ │ │ ├── auth.py # 인증 API
│ │ │ ├── companies.py # 회사 CRUD
│ │ │ ├── users.py # 사용자 CRUD
│ │ │ ├── projects.py # 공사 관리 API
│ │ │ ├── materials.py # 자재 관리 API
│ │ │ ├── plugins.py # 플러그인 CRUD + 연결
│ │ │ ├── documents.py # 공가신청/해지 문서 API
│ │ │ └── ocr.py # OCR 업로드/리뷰 API
│ │ ├── models/
│ │ │ ├── __init__.py
│ │ │ └── models.py # SQLAlchemy 모델 (14개 테이블)
│ │ ├── config.py # 설정 (pydantic-settings)
│ │ ├── database.py # DB 연결 및 세션
│ │ ├── enums.py # ENUM 정의
│ │ └── main.py # FastAPI 앱 진입점
│ ├── migrations/ # Alembic 마이그레이션
│ ├── alembic.ini
│ ├── pyproject.toml
│ ├── requirements.txt
│ └── Dockerfile
├── ocr-service/ # OCR 처리 서비스
│ ├── main.py
│ ├── requirements.txt
│ └── Dockerfile
├── nginx/
│ └── nginx.conf # Nginx 설정 (API 프록시)
├── docker-compose.yml
├── .env.example
└── README.md
테이블설명
companies회사
users사용자 (관리자/공사감독/현장대리/현장팀/공무팀)
viewer_permissions감시인 권한
project_types공사유형
project_type_stages공사유형별 단계
projects공사
project_teams공사 팀 배정
project_stage_logs공사 단계 로그
materials자재 마스터
material_inputs자재 입력 (최초/사용/반영)
plugins플러그인
project_type_plugins공사유형-플러그인 연결
documents문서 (공가신청/공가해지)
ocr_uploadsOCR 업로드
라우터경로설명
auth/api/v1/auth로그인/회원가입
companies/api/v1/companies회사 CRUD
users/api/v1/users사용자 CRUD/권한
projects/api/v1/projects공사/공사유형/단계 관리
materials/api/v1/materials자재 관리/요약
plugins/api/v1/plugins플러그인 CRUD + 공사유형 연결
documents/api/v1/documents공가신청/해지 문서 (플러그인 체크 포함)
ocr/api/v1/ocrOCR 업로드/리뷰 (현장대리 확인)
Terminal window
cp .env.example .env
# .env 파일을 실제 환경에 맞게 수정하세요
Terminal window
# 모든 서비스 실행
docker compose up -d
# 백엔드 로그 확인
docker compose logs -f backend
# 서비스 중지
docker compose down

필수 조건: Python 3.11+, PostgreSQL 16, Redis 7

Terminal window
# 백엔드 디렉토리로 이동
cd backend
# 가상환경 생성 및 활성화
python -m venv venv
source venv/bin/activate # Linux/Mac
# venv\Scripts\activate # Windows
# 의존성 설치
pip install -e .
# 데이터베이스 마이그레이션
alembic upgrade head
# 서버 실행
uvicorn app.main:app --reload --port 8000

서버 실행 후 브라우저에서 접속:

Terminal window
cd backend
# 새 마이그레이션 생성
alembic revision --autogenerate -m "설명"
# 마이그레이션 적용
alembic upgrade head
# 마이그레이션 롤백
alembic downgrade -1
# 현재 리비전 확인
alembic current
  • 회사별 플러그인 생성/관리
  • 공사유형에 플러그인 연결 (활성화/비활성화)
  • 공가신청/해지 문서 작성 시 플러그인 활성화 검증
  • 문서 상태 전이: 작성중 → 신청 → 접수 → 완료
  • 플러그인 활성화 체크를 통한 권한 제어
  • 상태별 검증 로직 포함
  • 현장팀의 문서/사진 업로드
  • 파일 형식/크기 검증 (JPG, PNG, PDF 등, 최대 20MB)
  • 현장대리 확인(리뷰) 프로세스: 대기 → 확인/수정
  • 자재 마스터 관리 (사급/지입)
  • 자재 입력: 최초/사용/반영 유형별 관리
  • 자재 요약: 불용/재고 자동 계산
변수기본값설명
POSTGRES_USERerpPostgreSQL 사용자
POSTGRES_PASSWORDerp123PostgreSQL 비밀번호
POSTGRES_DBerp_construction데이터베이스명
POSTGRES_PORT5432PostgreSQL 포트
REDIS_PORT6379Redis 포트
BACKEND_PORT8000백엔드 포트
FRONTEND_PORT80프론트엔드 포트
SECRET_KEYchange-this-in-productionJWT 시크릿 키
DATABASE_URLpostgresql+asyncpg://erp:erp123@localhost:5432/erp_constructionDB 연결 URL
UPLOAD_DIR/tmp/erp-uploads파일 업로드 경로

사내 프로젝트