You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
TranscriptEditorWidget 내에 PySide6.QtMultimedia 기반 QMediaPlayer 및 QAudioOutput 객체 탑재.
플레이어 제어 바 UI 추가: 재생/일시정지 버튼, 수평 방향 QSlider 진행 바, 재생 시간 표시 레이블, 선택 구간 재생 버튼, 재생 싱크 스크롤 활성화 체크박스.
작업 오디오 소스 자동 매핑: load_job(job_id) 호출 시 cache/jobs/<job_id>/processed.wav (전처리 캐시) 존재를 최우선 점검하고, 미발견 시 SQLite DB에서 job의 source_path를 쿼리하여 원본 미디어 재생 소스로 대체 재생.
세그먼트 테이블 행 더블클릭(cellDoubleClicked) 및 "선택 구간 재생" 시 해당 세그먼트의 start_sec로 플레이어 seek 및 자동 재생.
플레이어 재생 시간 변화(positionChanged) 시 현재 위치에 해당하는 테이블 행을 하이라이트(Select) 처리하며, 스크롤 싱크 옵션이 활성화된 경우 해당 행이 중앙에 오도록 자동 스크롤(scrollToItem) 연동.
메인 화면 다중 작업 배치 큐 UX 개선 (Batch Queue UX):
파일 큐 처리 상태 머신 구현: 대기 목록 내 아이템들에 대기 상태 문자열([대기], [진행 중], [완료], [실패])을 추가하여 실시간 시각화.
순차 처리 기동 루프(_start_next_queue_item): 스레드가 완전히 해제된 시점(_on_thread_finished)에 다음 파일의 변환을 기동시켜 리소스 경합 방지.
연속성 정책 반영: 다중 파일 변환 도중 특정 개별 파일 변환이 실패하더라도 전체 배치 처리를 멈추지 않고, 해당 행만 [실패] 표기 후 다음 작업을 연쇄 변환.
변환 중단(Cancel) 기능: 진행 중 "변환 중단" 버튼 클릭 시 확인 다이얼로그를 통해 대기 중인 모든 큐를 일괄 파기하고 워커 스레드를 정지(terminate()).
변환 진행 중 파일 추가/제거/비우기 동작 시도에 대한 안전 가드 팝업 경고 추가.
Tests
tests/test_batch_queue.py를 신규 추가하여, 다중 파일 배치 큐 가동, 순차 변환, 실패 시의 연속성 기동, 변환 중환 및 큐 일괄 파기 등 상태 머신 시뮬레이션 테스트 3건 작성 완료.
python -m pytest: 100/100 PASS (총 100개 테스트)
python -m ruff check .: PASS
Feature: Delete UX & Privacy Control & Doc Alignment
Added
작업/캐시 삭제 기능 보강 (Delete UX):
CLI jobs delete <job_id> 명령어 추가: 지정된 작업 ID의 DB 데이터와 캐시 오디오 디렉터리(cache/jobs/<job_id>)를 재확인 절차를 거쳐 영구 연쇄 삭제합니다.
CLI jobs clean-cache 명령어 추가: DB 내 활성 작업 목록과 대조하여 등록되지 않은 방치 캐시 디렉터리(고스트 캐시)만 안전하게 일괄 정리합니다.
GUI 최근 작업 목록(recent_list)에 우클릭 컨텍스트 메뉴 및 "작업 및 캐시 삭제" 액션 추가: QMessageBox 대화상자로 안전하게 재확인 후 DB 레코드와 물리 캐시를 연쇄 삭제 처리하고 목록을 자동 갱신합니다.
최근 작업 기록 저장 비활성화 옵션 (Privacy Control):
Settings 데이터클래스에 keep_history (기본값: True) 필드를 탑재하고 JSON 설정 파일 연동 및 형변환 가드 처리를 추가했습니다.
STT 변환 시(run_transcribe), keep_history가 False이면 persist 매개변수를 강제 비활성화하여 DB 영속화 저장을 전면 우회하도록 처리했습니다.
GUI 설정 그룹에 "최근 작업 기록 저장 및 표시" 체크박스 위젯을 추가하여 즉시 저장 및 리프레시되도록 했습니다. 기능 비활성화 시 목록에 고지 문구 노출 및 컨텍스트 메뉴 진입을 차단합니다.
Changed
Jamo Fuzzy 매칭 문서 상태 갱신 (Doc Alignment):
docs/design/jamo-fuzzy-matching.md 설계 노트의 상태를 구현 완료 (v1.0 완비)로 변경하고 6절에 2글자 단어 한계와 임계값 0.75~0.80 상향 조정 가이드를 보완했습니다.
Tests
tests/test_settings_service.py에 keep_history 형변환 및 역직렬화 단위 테스트 추가.
tests/test_transcribe_persistence.py에 keep_history가 False일 때 DB 트랜잭션 및 영속화를 생략하는지에 대한 Mocking 기반 통합 테스트 추가.
python -m pytest: 97/97 PASS
python -m ruff check .: PASS
Branding: 설교필기 PulpitInk 전체 리네이밍
Changed
프로젝트 전체 브랜딩을 SermonScript에서 설교필기 (PulpitInk) 로 변경했습니다.