회사의 소모품 통합구매 업무를 위한 웹 애플리케이션
- 구매 신청: 부서별 소모품 구매 신청
- 결재 워크플로우: 팀장 → 부장 2단계 결재
- 발주 관리: PDF/Excel 발주서 생성
- 재고 관리: 납품 확인 및 재고 현황 추적
- 통계 대시보드: 구매 현황 시각화 및 엑셀 다운로드
- Python 3.11
- Flask 3.0
- SQLite (SQLAlchemy ORM)
- Bootstrap 5
- Chart.js
- 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-compose ps
# 컨테이너 중지
docker-compose down
# 컨테이너 재시작
docker-compose restart
# 로그 확인
docker-compose logs -f web
# 데이터베이스 백업
docker cp procurement-system:/app/data/procurement.db ./backup.db- 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 --config gunicorn.conf.py run:app
# 또는 직접 옵션 지정
gunicorn -w 4 -b 0.0.0.0:5000 run:app- 관리자 계정으로 로그인:
admin / admin123 - 관리 메뉴 → "샘플 데이터 생성" 클릭
| 계정 | 비밀번호 | 권한 |
|---|---|---|
| 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-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