Skip to content

ybRoh/procurement_system

Repository files navigation

소모품 통합구매 시스템

회사의 소모품 통합구매 업무를 위한 웹 애플리케이션

주요 기능

  • 구매 신청: 부서별 소모품 구매 신청
  • 결재 워크플로우: 팀장 → 부장 2단계 결재
  • 발주 관리: PDF/Excel 발주서 생성
  • 재고 관리: 납품 확인 및 재고 현황 추적
  • 통계 대시보드: 구매 현황 시각화 및 엑셀 다운로드

기술 스택

  • Python 3.11
  • Flask 3.0
  • SQLite (SQLAlchemy ORM)
  • Bootstrap 5
  • Chart.js

배포 가이드

방법 1: Docker 배포 (권장)

사전 요구사항

  • Docker 및 Docker Compose 설치

배포 절차

# 1. 프로젝트 클론
git clone <repository-url>
cd procurement_system

# 2. 환경 변수 설정
cp .env.example .env

# 3. .env 파일 수정 (필수)
vi .env

.env 파일 설정:

# 필수: 보안을 위해 반드시 변경
SECRET_KEY=your-random-secret-key-here

# 선택: 이메일 알림 활성화 시
MAIL_ENABLED=true
MAIL_SERVER=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=your-email@gmail.com
MAIL_PASSWORD=your-app-password
# 4. Docker 컨테이너 실행
docker-compose up -d --build

# 5. 로그 확인
docker-compose logs -f

# 6. 접속 확인
curl http://localhost:5000

Docker 관리 명령어

# 컨테이너 상태 확인
docker-compose ps

# 컨테이너 중지
docker-compose down

# 컨테이너 재시작
docker-compose restart

# 로그 확인
docker-compose logs -f web

# 데이터베이스 백업
docker cp procurement-system:/app/data/procurement.db ./backup.db

방법 2: 직접 설치

사전 요구사항

  • Python 3.11 이상
  • pip

설치 절차

# 1. 프로젝트 클론
git clone <repository-url>
cd procurement_system

# 2. 가상환경 생성 및 활성화
python -m venv venv
source venv/bin/activate  # Windows: venv\Scripts\activate

# 3. 의존성 설치
pip install -r requirements.txt

# 4. 환경 변수 설정
cp .env.example .env
vi .env  # SECRET_KEY 등 수정

# 5. 개발 서버 실행
python run.py

프로덕션 실행 (Gunicorn)

# Gunicorn으로 실행
gunicorn --config gunicorn.conf.py run:app

# 또는 직접 옵션 지정
gunicorn -w 4 -b 0.0.0.0:5000 run:app

초기 설정

샘플 데이터 생성

  1. 관리자 계정으로 로그인: admin / admin123
  2. 관리 메뉴 → "샘플 데이터 생성" 클릭

기본 테스트 계정

계정 비밀번호 권한
admin admin123 관리자
purchaser pur123 구매담당자
teamlead team123 팀장 (1차 결재)
depthead dept123 부장 (2차 결재)
user1 user123 일반사용자 (영업부)
user2 user123 일반사용자 (개발부)

업무 흐름

[부서 사용자]        [구매 담당자]         [결재자]           [업체]
     │                    │                  │                 │
  신청서 작성 ──────────> 접수               │                 │
     │                    │                  │                 │
     │               매수가 결정             │                 │
     │                    │                  │                 │
     │               결재 요청 ───────────> 승인/반려          │
     │                    │                  │                 │
     │              <──── 결재 완료          │                 │
     │                    │                  │                 │
     │               발주서 생성 ─────────────────────────> 발주
     │                    │                  │                 │
     │               납품 확인 <─────────────────────────── 납품
     │                    │                  │                 │
  완료 알림 <────────── 완료                 │                 │

디렉토리 구조

procurement_system/
├── app/
│   ├── __init__.py          # Flask 앱 초기화
│   ├── models.py            # DB 모델
│   ├── routes/
│   │   ├── auth.py          # 로그인/로그아웃
│   │   ├── request.py       # 신청 관련
│   │   ├── purchase.py      # 구매 담당자
│   │   ├── approval.py      # 결재
│   │   ├── inventory.py     # 재고/납품
│   │   ├── statistics.py    # 통계
│   │   └── admin.py         # 관리
│   ├── templates/           # HTML 템플릿
│   ├── static/              # CSS, JS
│   └── utils/
│       ├── pdf_generator.py
│       └── excel_generator.py
├── config.py                # 설정
├── run.py                   # 앱 실행
├── requirements.txt         # Python 의존성
├── Dockerfile
├── docker-compose.yml
├── gunicorn.conf.py
└── .env.example

문제 해결

Docker 컨테이너가 시작되지 않음

# 로그 확인
docker-compose logs web

# 컨테이너 재빌드
docker-compose down
docker-compose up -d --build

데이터베이스 초기화

# Docker 환경
docker-compose down -v  # 볼륨 삭제
docker-compose up -d --build

# 직접 설치
rm procurement.db
python run.py

포트 충돌

# docker-compose.yml에서 포트 변경
ports:
  - "8080:5000"  # 외부포트:내부포트

라이선스

MIT License

About

소모품 통합구매 관리 시스템 (Flask)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors