129 lines
3.4 KiB
Python
129 lines
3.4 KiB
Python
# -*- coding: utf-8 -*-
|
|
"""
|
|
전동차 업무 인수인계 및 고장관리 프로그램
|
|
메인 진입점
|
|
|
|
이 프로그램은 전동차 운용실의 24시간 교대 근무 환경에서
|
|
업무 인수인계 및 고장관리를 위한 윈도우 데스크톱 애플리케이션입니다.
|
|
|
|
Features:
|
|
- 지시, 고장, 작업, 기타 섹션 관리
|
|
- 일상검수 편성 관리
|
|
- 할일 목록 및 메모
|
|
- 팀별 확인 체크
|
|
- 편성별 고장 이력 조회
|
|
|
|
Author: 검수팀
|
|
Version: 1.0.0
|
|
"""
|
|
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
# 프로젝트 루트를 Python 경로에 추가
|
|
project_root = Path(__file__).parent
|
|
sys.path.insert(0, str(project_root))
|
|
|
|
from PySide6.QtWidgets import QApplication
|
|
from PySide6.QtGui import QFont
|
|
|
|
from core.constants import APP_NAME, APP_VERSION, DATA_DIR, LOGS_DIR
|
|
from core.logger import setup_logger, get_logger, cleanup_old_logs
|
|
from core.config import ConfigManager
|
|
|
|
|
|
def setup_environment():
|
|
"""
|
|
애플리케이션 환경 설정
|
|
|
|
필요한 디렉토리를 생성하고 로깅을 초기화합니다.
|
|
"""
|
|
# 필요한 디렉토리 생성
|
|
DATA_DIR.mkdir(parents=True, exist_ok=True)
|
|
LOGS_DIR.mkdir(parents=True, exist_ok=True)
|
|
|
|
# 로깅 설정
|
|
setup_logger()
|
|
|
|
# 오래된 로그 정리
|
|
cleanup_old_logs()
|
|
|
|
|
|
def create_application() -> QApplication:
|
|
"""
|
|
Qt 애플리케이션 생성 및 설정
|
|
|
|
Returns:
|
|
QApplication 인스턴스
|
|
"""
|
|
# High DPI 설정 (Qt6에서는 기본 활성화됨)
|
|
|
|
# 애플리케이션 생성
|
|
app = QApplication(sys.argv)
|
|
|
|
# 애플리케이션 정보 설정
|
|
app.setApplicationName(APP_NAME)
|
|
app.setApplicationVersion(APP_VERSION)
|
|
app.setOrganizationName("검수팀")
|
|
|
|
# 기본 폰트 설정
|
|
font = QFont("GmarketSans", 12)
|
|
app.setFont(font)
|
|
|
|
return app
|
|
|
|
|
|
def main():
|
|
"""
|
|
메인 함수
|
|
|
|
애플리케이션을 초기화하고 실행합니다.
|
|
"""
|
|
# 환경 설정
|
|
setup_environment()
|
|
|
|
# 로거 가져오기
|
|
logger = get_logger(__name__)
|
|
logger.info("%s v%s 시작", APP_NAME, APP_VERSION)
|
|
|
|
try:
|
|
# 설정 로드
|
|
config_manager = ConfigManager()
|
|
logger.info("설정 로드 완료")
|
|
|
|
# 데이터베이스 마이그레이션 실행
|
|
try:
|
|
from database.migrations import run_migrations
|
|
if run_migrations():
|
|
logger.info("데이터베이스 마이그레이션 완료")
|
|
else:
|
|
logger.warning("데이터베이스 마이그레이션 실패")
|
|
except Exception as e:
|
|
logger.warning(f"마이그레이션 실행 중 오류 발생: {e}")
|
|
|
|
# Qt 애플리케이션 생성
|
|
app = create_application()
|
|
logger.info("애플리케이션 생성 완료")
|
|
|
|
# 메인 윈도우 생성 및 표시
|
|
from ui.main_window import MainWindow
|
|
|
|
window = MainWindow(config_manager)
|
|
window.show()
|
|
logger.info("메인 윈도우 표시")
|
|
|
|
# 이벤트 루프 시작
|
|
exit_code = app.exec()
|
|
|
|
logger.info("%s 종료 (코드: %d)", APP_NAME, exit_code)
|
|
return exit_code
|
|
|
|
except (RuntimeError, OSError) as e:
|
|
logger.critical("치명적 오류 발생: %s", e, exc_info=True)
|
|
return 1
|
|
|
|
|
|
if __name__ == "__main__":
|
|
sys.exit(main())
|
|
|