KINDNICK bedbb1e9ec
Some checks failed
CI / test (push) Has been cancelled
Initial release v2.2.0
핵심 기능:
- 단축근무·표준·반일 등 다양한 근무 패턴 (5개 프리셋 + 사용자 정의)
- Windows 이벤트 뷰어 자동 출퇴근 감지
- 30분 단위 연장근무 적립/사용 시스템
- 1.0/0.5/0.25일 연차·반차·반반차
- 자동 점심·저녁·외출·자동 백업·화면 잠금 자동 외출
- 한국 공휴일 자동 등록 (음력 포함, holidays 패키지)
- matplotlib 차트 기반 주간/월간/패턴 통계
- 미니 위젯 + 시스템 트레이 통합
- 한국어/English i18n
- 자가 업데이트 (updater.exe + Gitea Releases)

아키텍처:
- core/ (db, time_calculator, notifier, i18n, version, settings_keys)
- ui/ (main_window + 9 dialogs + 3 controllers)
- utils/ (backup, lock_detector, debug_log, updater_client, time_format)
- tests/ (66 pytest 단위) + 통합/i18n GUI 검증

CI/CD:
- .gitea/workflows/ci.yml: push 시 pytest + 통합 테스트
- .gitea/workflows/release.yml: v* 태그 push 시 두 .exe 자동 빌드 + Releases 첨부

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-30 12:54:40 +09:00

161 lines
4.2 KiB
Markdown

# 설치 가이드
## 1. Python 설치
Python 3.9 이상이 필요합니다.
### Windows
1. https://www.python.org/downloads/ 방문
2. "Download Python 3.x.x" 클릭
3. 설치 시 **"Add Python to PATH"** 체크 필수!
확인:
```bash
python --version
```
## 2. 프로젝트 다운로드
프로젝트를 다운로드하거나 압축을 해제합니다.
## 3. 패키지 설치
프로젝트 폴더에서 명령 프롬프트(cmd) 또는 PowerShell을 엽니다.
```bash
pip install -r requirements.txt
```
### 설치되는 패키지:
1. **PyQt5** - GUI 프레임워크
2. **pywin32** - Windows API 접근
3. **python-dateutil** - 날짜 계산
4. **matplotlib** - 그래프
5. **plyer** - 알림 시스템
6. **holidays** - 한국 공휴일 자동 등록 (음력 명절 포함)
## 4. 리소스 다운로드 (선택)
리소스가 없어도 프로그램은 작동하지만, 더 예쁜 UI를 위해 다운로드를 권장합니다.
```bash
python download_resources.py
```
이 스크립트는 무료 리소스 다운로드 링크를 안내합니다.
### 수동 다운로드:
#### 아이콘
다음 사이트에서 다운로드:
- **Flaticon**: https://www.flaticon.com/
- **Material Design Icons**: https://materialdesignicons.com/
- **Icons8**: https://icons8.com/
다운로드 후 `resources/icons/` 폴더에 저장
필요한 아이콘:
- `app_icon.ico` (512x512)
- `clock.png`, `timer.png`, `lunch.png`
- `calendar.png`, `statistics.png`, `vacation.png`
- `settings.png`, `notification.png`
#### 사운드
다음 사이트에서 다운로드:
- **Mixkit**: https://mixkit.co/free-sound-effects/ (추천)
- **Freesound**: https://freesound.org/
- **Zapsplat**: https://www.zapsplat.com/
다운로드 후 `resources/sounds/` 폴더에 저장
필요한 사운드:
- `clock_out_alarm.wav` - 퇴근시간 알림
- `notification.wav` - 일반 알림
- `success.wav` - 성공 효과음
## 5. 실행
```bash
python main.py
```
### 관리자 권한으로 실행 (권장)
Windows 이벤트 뷰어 접근을 위해 관리자 권한이 필요할 수 있습니다.
1. **방법 1**: cmd를 관리자 권한으로 실행
- Windows 키 + X
- "명령 프롬프트(관리자)" 또는 "Windows PowerShell(관리자)" 선택
- 프로젝트 폴더로 이동: `cd "경로"`
- `python main.py` 실행
2. **방법 2**: 바로가기 생성
- `python main.py`를 실행하는 배치 파일(.bat) 생성
- 우클릭 → 속성 → 고급 → "관리자 권한으로 실행" 체크
## 6. 첫 실행
1. 프로그램이 실행되면 자동으로 데이터베이스(`database.db`) 생성
2. Windows 이벤트 뷰어에서 오늘의 부팅 시간 자동 감지
3. 감지된 시간이 출근시간으로 설정됨
## 문제 해결
### pywin32 설치 오류
```bash
pip install --upgrade pywin32
python -m pywin32_postinstall -install
```
### PyQt5 설치 오류
```bash
pip install --upgrade pip
pip install PyQt5
```
### "DLL load failed" 오류
Visual C++ Redistributable 설치 필요:
https://aka.ms/vs/17/release/vc_redist.x64.exe
### 이벤트 뷰어 접근 불가
- 관리자 권한으로 실행
- 또는 설정에서 수동 입력 모드 사용
## 업그레이드
```bash
pip install --upgrade -r requirements.txt
```
## 제거
1. 프로젝트 폴더 삭제
2. 패키지 제거 (선택):
```bash
pip uninstall PyQt5 pywin32 python-dateutil pandas matplotlib plyer
```
## 프로덕션 빌드 (PyInstaller)
소스 없이 실행 파일만 배포하려면:
```bash
python -m PyInstaller --clean main.spec # → dist/main.exe (~73MB)
python -m PyInstaller --clean updater.spec # → dist/updater.exe (~6MB, 자가 업데이터)
```
배포 패키지에는 두 .exe를 함께 포함시켜 같은 폴더에 두세요.
자동 업데이트는 main.exe가 같은 폴더의 updater.exe를 호출해야 동작합니다.
빌드 시 주의:
- `dist/main.exe`가 실행 중이면 `PermissionError` 발생 → 종료 후 재실행
- `holidays` 등 옵셔널 패키지는 설치된 환경에서 빌드해야 포함됨
## 환경 변수
- `CLOCKOUT_DEBUG=1` — 디버그 로그를 `~/.clockout_logs/debug.log`로 출력
- `CLOCKOUT_DEBUG_DIR=경로` — 로그 저장 위치 변경
## 다음 단계
설치가 완료되었다면 [README.md](README.md)를 참고하여 프로그램을 사용하세요!