[2026-02-14 13:34:39] [INFO] [Main] == Application Startup [TEST MODE] ==
[2026-02-14 13:34:39] [INFO] [Controller] Initializing Controller (TestMode=True)
[2026-02-14 13:34:39] [INFO] [Database] Connected to DB: D:\py_train\voc_noti\app\data\voc.db
[2026-02-14 13:34:39] [INFO] [Controller] Scheduler Updated: Crawling 10min / Alert Check 5min
[2026-02-14 13:34:39] [INFO] [Controller] Test Mode: Skipping web crawling, using local DB.
[2026-02-14 13:34:39] [INFO] [Controller] Startup Notification Shown
[2026-02-14 13:42:34] [INFO] [Main] == Application Startup [TEST MODE] ==
[2026-02-14 13:42:34] [INFO] [Controller] Initializing Controller (TestMode=True)
[2026-02-14 13:42:34] [INFO] [Database] Connected to DB: D:\py_train\voc_noti\app\data\voc.db
[2026-02-14 13:42:34] [INFO] [Controller] Scheduler Updated: Crawling 10min / Alert Check 5min
[2026-02-14 13:42:34] [INFO] [Controller] Test Mode: Skipping web crawling, using local DB.
[2026-02-14 13:42:34] [INFO] [Controller] Startup Notification Shown
[2026-02-14 13:43:06] [INFO] [Controller]  shutting down application...
[2026-02-14 13:44:35] [INFO] [Main] == Application Startup [TEST MODE] ==
[2026-02-14 13:44:35] [INFO] [Controller] Initializing Controller (TestMode=True)
[2026-02-14 13:44:35] [INFO] [Database] Connected to DB: D:\py_train\voc_noti\app\data\voc.db
[2026-02-14 13:44:37] [INFO] [Controller] Scheduler Updated: Crawling 10min / Alert Check 5min
[2026-02-14 13:44:37] [INFO] [Controller] Test Mode: Skipping web crawling, using local DB.
[2026-02-14 13:44:37] [INFO] [Controller] Startup Notification Shown
[2026-02-14 13:49:37] [INFO] [Controller] Checking New DB Data... (Last Check: 2026-02-13 13:44:36)
[2026-02-14 13:50:09] [INFO] [Controller]  shutting down application...
[2026-02-14 13:50:29] [INFO] [Main] == Application Startup [TEST MODE] ==
[2026-02-14 13:50:29] [INFO] [Controller] 컨트롤러 초기화 중 (테스트 모드=True)
[2026-02-14 13:50:29] [INFO] [Database] DB 연결 성공: D:\py_train\voc_noti\app\data\voc.db
[2026-02-14 13:50:30] [INFO] [Controller] 스케줄러 업데이트됨: 크롤링 10분 / 알림 체크 5분
[2026-02-14 13:50:30] [INFO] [Controller] 테스트 모드: 웹 크롤링 생략, 로컬 DB 사용.
[2026-02-14 13:50:30] [INFO] [Controller] 시작 알림 표시됨
[2026-02-14 13:55:30] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-13 13:50:29)
[2026-02-14 14:00:30] [INFO] [Controller] 테스트 모드: 웹 크롤링 생략, 로컬 DB 사용.
[2026-02-14 14:00:30] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-14 13:55:30)
[2026-02-14 14:03:50] [INFO] [Controller] 애플리케이션 종료 중...
[2026-02-14 14:34:20] [INFO] [Main] == Application Startup [TEST MODE] ==
[2026-02-14 14:34:20] [INFO] [Controller] 컨트롤러 초기화 중 (테스트 모드=True)
[2026-02-14 14:34:20] [INFO] [Database] DB 연결 성공: D:\py_train\voc_noti\app\data\voc.db
[2026-02-14 14:34:21] [INFO] [Controller] 스케줄러 업데이트됨: 크롤링 10분 / 알림 체크 5분
[2026-02-14 14:34:21] [INFO] [Controller] 테스트 모드: 웹 크롤링 생략, 로컬 DB 사용.
[2026-02-14 14:34:21] [INFO] [Controller] 시작 알림 표시됨
[2026-02-14 14:39:21] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-13 14:34:20)
[2026-02-14 14:44:21] [INFO] [Controller] 테스트 모드: 웹 크롤링 생략, 로컬 DB 사용.
[2026-02-14 14:44:21] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-14 14:39:21)
[2026-02-14 14:49:22] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-14 14:44:21)
[2026-02-14 14:54:22] [INFO] [Controller] 테스트 모드: 웹 크롤링 생략, 로컬 DB 사용.
[2026-02-14 14:54:22] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-14 14:49:22)
[2026-02-14 14:59:22] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-14 14:54:22)
[2026-02-14 15:04:22] [INFO] [Controller] 테스트 모드: 웹 크롤링 생략, 로컬 DB 사용.
[2026-02-14 15:04:22] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-14 14:59:22)
[2026-02-14 15:09:22] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-14 15:04:22)
[2026-02-14 15:14:22] [INFO] [Controller] 테스트 모드: 웹 크롤링 생략, 로컬 DB 사용.
[2026-02-14 15:14:22] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-14 15:09:22)
[2026-02-14 15:19:22] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-14 15:14:22)
[2026-02-14 15:22:23] [INFO] [Controller] 애플리케이션 종료 중...
[2026-02-14 16:15:46] [INFO] [TimetableService] 시각표 로드 완료: 40929 행 (경로: D:\py_train\voc_noti\app\data\line1_sp_timetable.parquet)
[2026-02-14 16:16:47] [INFO] [TimetableService] 시각표 로드 완료: 40929 행 (경로: D:\py_train\voc_noti\app\data\line1_sp_timetable.parquet)
[2026-02-14 16:18:22] [INFO] [TimetableService] 시각표 로드 완료: 40929 행 (경로: D:\py_train\voc_noti\app\data\line1_sp_timetable.parquet)
[2026-02-14 16:18:52] [INFO] [TimetableService] 시각표 로드 완료: 40929 행 (경로: D:\py_train\voc_noti\app\data\line1_sp_timetable.parquet)
[2026-02-14 16:19:13] [INFO] [TimetableService] 시각표 로드 완료: 40929 행 (경로: D:\py_train\voc_noti\app\data\line1_sp_timetable.parquet)
[2026-02-14 16:19:13] [INFO] [ReportService] 열차번호 유추 성공: 1017 (역: 노포, 시간: 06:32)
[2026-02-14 16:21:59] [INFO] [TimetableService] 시각표 로드 완료: 40929 행 (경로: D:\py_train\voc_noti\app\data\line1_sp_timetable.parquet)
[2026-02-14 16:22:57] [INFO] [TimetableService] 시각표 로드 완료: 40929 행 (경로: D:\py_train\voc_noti\app\data\line1_sp_timetable.parquet)
[2026-02-14 16:25:49] [INFO] [TimetableService] 시각표 로드 완료: 40929 행 (경로: D:\py_train\voc_noti\app\data\line1_sp_timetable.parquet)
[2026-02-14 16:28:02] [INFO] [TimetableService] 시각표 로드 완료: 40929 행 (경로: D:\py_train\voc_noti\app\data\line1_sp_timetable.parquet)
[2026-02-14 16:28:50] [INFO] [TimetableService] 시각표 로드 완료: 40929 행 (경로: D:\py_train\voc_noti\app\data\line1_sp_timetable.parquet)
[2026-02-14 16:40:46] [INFO] [TimetableService] 시각표 로드 완료: 40929 행 (경로: D:\py_train\voc_noti\app\data\line1_sp_timetable.parquet)
[2026-02-14 16:47:02] [INFO] [TimetableService] 시각표 로드 완료: 40929 행 (경로: D:\py_train\voc_noti\app\data\line1_sp_timetable.parquet)
[2026-02-15 19:46:37] [INFO] [TimetableService] 시각표 로드 완료: 40929 행 (경로: D:\py_train\voc_noti\app\data\line1_sp_timetable.parquet)
[2026-02-15 20:30:02] [INFO] [TimetableService] 시각표 로드 완료: 40929 행 (경로: D:\py_train\voc_noti\app\data\line1_sp_timetable.parquet)
[2026-02-15 20:38:19] [INFO] [TimetableService] 시각표 로드 완료: 40929 행 (경로: D:\py_train\voc_noti\app\data\line1_sp_timetable.parquet)
[2026-02-15 20:38:19] [INFO] [ReportService] 열차 후보군 발견: 9개
[2026-02-15 20:48:26] [INFO] [TimetableService] 시각표 로드 완료: 40929 행 (경로: D:\py_train\voc_noti\app\data\line1_sp_timetable.parquet)
[2026-02-15 20:48:26] [INFO] [ReportService] 열차 후보군 발견: 9개
[2026-02-15 20:52:22] [INFO] [TimetableService] 시각표 로드 완료: 40929 행 (경로: D:\py_train\voc_noti\app\data\line1_sp_timetable.parquet)
[2026-02-15 20:52:22] [INFO] [ReportService] 열차 후보군 발견: 9개
[2026-02-15 20:52:22] [INFO] [ReportService] 열차 후보군 발견: 9개
[2026-02-15 20:52:22] [INFO] [ReportService] 후보군 중 본문 일치 열차번호 발견: 2116
[2026-02-15 20:52:50] [INFO] [TimetableService] 시각표 로드 완료: 40929 행 (경로: D:\py_train\voc_noti\app\data\line1_sp_timetable.parquet)
[2026-02-15 20:52:50] [INFO] [ReportService] 열차 후보군 발견: 9개
[2026-02-15 20:52:50] [INFO] [ReportService] 열차 후보군 발견: 9개
[2026-02-15 20:52:50] [INFO] [ReportService] 후보군 중 본문 일치 열차번호 발견: 2116
[2026-02-15 21:08:55] [INFO] [Database] DB 연결 성공: D:\py_train\voc_noti\app\data\voc.db
[2026-02-15 21:09:01] [INFO] [Main] == Application Startup [LIVE MODE] ==
[2026-02-15 21:09:01] [INFO] [Controller] 컨트롤러 초기화 중 (테스트 모드=False)
[2026-02-15 21:09:01] [INFO] [Database] DB 연결 성공: D:\py_train\voc_noti\app\data\voc.db
[2026-02-15 21:09:01] [INFO] [TimetableService] 시각표 로드 완료: 40929 행 (경로: D:\py_train\voc_noti\app\data\line1_sp_timetable.parquet)
[2026-02-15 21:09:01] [INFO] [Controller] 스케줄러 업데이트됨: 크롤링 10분 / 알림 체크 5분
[2026-02-15 21:09:01] [INFO] [Controller] 크롤링 사이클 시작...
[2026-02-15 21:09:01] [INFO] [Controller] 로그인 세션 만료. 재로그인 시도 중...
[2026-02-15 21:09:01] [INFO] [Controller] 시작 알림 표시됨
[2026-02-15 21:09:02] [INFO] [Scraper] 116696 계정으로 로그인 시도 중...
[2026-02-15 21:09:07] [INFO] [Main] == Application Startup [TEST MODE] ==
[2026-02-15 21:09:07] [INFO] [Controller] 컨트롤러 초기화 중 (테스트 모드=True)
[2026-02-15 21:09:07] [INFO] [Database] DB 연결 성공: D:\py_train\voc_noti\app\data\voc.db
[2026-02-15 21:09:07] [INFO] [TimetableService] 시각표 로드 완료: 40929 행 (경로: D:\py_train\voc_noti\app\data\line1_sp_timetable.parquet)
[2026-02-15 21:09:07] [INFO] [Controller] 스케줄러 업데이트됨: 크롤링 10분 / 알림 체크 5분
[2026-02-15 21:09:07] [INFO] [Controller] 테스트 모드: 웹 크롤링 생략, 로컬 DB 사용.
[2026-02-15 21:09:07] [INFO] [Controller] 시작 알림 표시됨
[2026-02-15 21:10:49] [INFO] [Database] DB 연결 성공: D:\py_train\voc_noti\app\data\voc.db
[2026-02-15 21:13:37] [INFO] [Main] == Application Startup [TEST MODE] ==
[2026-02-15 21:13:37] [INFO] [Controller] 컨트롤러 초기화 중 (테스트 모드=True)
[2026-02-15 21:13:37] [INFO] [Database] DB 연결 성공: D:\py_train\voc_noti\app\data\voc.db
[2026-02-15 21:13:37] [INFO] [TimetableService] 시각표 로드 완료: 40929 행 (경로: D:\py_train\voc_noti\app\data\line1_sp_timetable.parquet)
[2026-02-15 21:13:37] [INFO] [Controller] 스케줄러 업데이트됨: 크롤링 10분 / 알림 체크 5분
[2026-02-15 21:13:37] [INFO] [Controller] 테스트 모드: 웹 크롤링 생략, 로컬 DB 사용.
[2026-02-15 21:13:37] [INFO] [Controller] 시작 알림 표시됨
[2026-02-15 21:14:18] [INFO] [Main] == Application Startup [TEST MODE] ==
[2026-02-15 21:14:18] [INFO] [Controller] 컨트롤러 초기화 중 (테스트 모드=True)
[2026-02-15 21:14:18] [INFO] [Database] DB 연결 성공: D:\py_train\voc_noti\app\data\voc.db
[2026-02-15 21:14:18] [INFO] [TimetableService] 시각표 로드 완료: 40929 행 (경로: D:\py_train\voc_noti\app\data\line1_sp_timetable.parquet)
[2026-02-15 21:14:18] [INFO] [Controller] 스케줄러 업데이트됨: 크롤링 10분 / 알림 체크 5분
[2026-02-15 21:14:18] [INFO] [Controller] 테스트 모드: 웹 크롤링 생략, 로컬 DB 사용.
[2026-02-15 21:14:18] [INFO] [Controller] 시작 알림 표시됨
[2026-02-15 21:14:33] [INFO] [ReportService] 열차 후보군 발견: 9개
[2026-02-15 21:15:50] [INFO] [Controller] 애플리케이션 종료 중...
[2026-02-15 21:16:36] [INFO] [Main] == Application Startup [TEST MODE] ==
[2026-02-15 21:16:36] [INFO] [Controller] 컨트롤러 초기화 중 (테스트 모드=True)
[2026-02-15 21:16:36] [INFO] [Database] DB 연결 성공: D:\py_train\voc_noti\app\data\voc.db
[2026-02-15 21:16:36] [INFO] [TimetableService] 시각표 로드 완료: 40929 행 (경로: D:\py_train\voc_noti\app\data\line1_sp_timetable.parquet)
[2026-02-15 21:16:36] [INFO] [Controller] 스케줄러 업데이트됨: 크롤링 10분 / 알림 체크 5분
[2026-02-15 21:16:36] [INFO] [Controller] 테스트 모드: 웹 크롤링 생략, 로컬 DB 사용.
[2026-02-15 21:16:36] [INFO] [Controller] 시작 알림 표시됨
[2026-02-15 21:16:45] [INFO] [ReportService] 열차 후보군 발견: 9개
[2026-02-15 21:21:36] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-14 21:16:36)
[2026-02-15 21:21:47] [INFO] [ReportService] 열차 후보군 발견: 7개
[2026-02-15 21:26:36] [INFO] [Controller] 테스트 모드: 웹 크롤링 생략, 로컬 DB 사용.
[2026-02-15 21:26:36] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-15 21:21:36)
[2026-02-15 21:27:09] [INFO] [Controller] 애플리케이션 종료 중...
[2026-02-15 21:27:12] [INFO] [Main] == Application Startup [TEST MODE] ==
[2026-02-15 21:27:12] [INFO] [Controller] 컨트롤러 초기화 중 (테스트 모드=True)
[2026-02-15 21:27:12] [INFO] [Database] DB 연결 성공: D:\py_train\voc_noti\app\data\voc.db
[2026-02-15 21:27:12] [INFO] [TimetableService] 시각표 로드 완료: 40929 행 (경로: D:\py_train\voc_noti\app\data\line1_sp_timetable.parquet)
[2026-02-15 21:27:12] [INFO] [Controller] 스케줄러 업데이트됨: 크롤링 10분 / 알림 체크 5분
[2026-02-15 21:27:12] [INFO] [Controller] 테스트 모드: 웹 크롤링 생략, 로컬 DB 사용.
[2026-02-15 21:27:12] [INFO] [Controller] 시작 알림 표시됨
[2026-02-15 21:27:24] [INFO] [ReportService] 열차 후보군 발견: 9개
[2026-02-15 21:28:07] [INFO] [ReportService] 열차 후보군 발견: 9개
[2026-02-15 21:28:44] [INFO] [ReportService] 열차 후보군 발견: 9개
[2026-02-15 21:29:07] [INFO] [ReportService] 열차 후보군 발견: 9개
[2026-02-15 21:29:45] [INFO] [ReportService] 열차 후보군 발견: 9개
[2026-02-15 21:30:54] [INFO] [ReportService] 열차 후보군 발견: 9개
[2026-02-15 21:32:12] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-14 21:27:12)
[2026-02-15 21:36:28] [INFO] [Controller] 애플리케이션 종료 중...
[2026-02-15 21:36:30] [INFO] [Main] == Application Startup [TEST MODE] ==
[2026-02-15 21:36:30] [INFO] [Controller] 컨트롤러 초기화 중 (테스트 모드=True)
[2026-02-15 21:36:30] [INFO] [Database] DB 연결 성공: D:\py_train\voc_noti\app\data\voc.db
[2026-02-15 21:36:30] [INFO] [TimetableService] 시각표 로드 완료: 40929 행 (경로: D:\py_train\voc_noti\app\data\line1_sp_timetable.parquet)
[2026-02-15 21:36:31] [INFO] [Controller] 스케줄러 업데이트됨: 크롤링 10분 / 알림 체크 5분
[2026-02-15 21:36:31] [INFO] [Controller] 테스트 모드: 웹 크롤링 생략, 로컬 DB 사용.
[2026-02-15 21:36:31] [INFO] [Controller] 시작 알림 표시됨
[2026-02-15 21:36:40] [INFO] [ReportService] 열차 후보군 발견: 9개
[2026-02-15 21:38:13] [INFO] [ReportService] 열차 후보군 발견: 9개
[2026-02-15 21:40:10] [INFO] [Controller] 애플리케이션 종료 중...
[2026-02-15 21:40:12] [INFO] [Main] == Application Startup [TEST MODE] ==
[2026-02-15 21:40:12] [INFO] [Controller] 컨트롤러 초기화 중 (테스트 모드=True)
[2026-02-15 21:40:12] [INFO] [Database] DB 연결 성공: D:\py_train\voc_noti\app\data\voc.db
[2026-02-15 21:40:12] [INFO] [TimetableService] 시각표 로드 완료: 40929 행 (경로: D:\py_train\voc_noti\app\data\line1_sp_timetable.parquet)
[2026-02-15 21:40:12] [INFO] [Controller] 스케줄러 업데이트됨: 크롤링 10분 / 알림 체크 5분
[2026-02-15 21:40:12] [INFO] [Controller] 테스트 모드: 웹 크롤링 생략, 로컬 DB 사용.
[2026-02-15 21:40:12] [INFO] [Controller] 시작 알림 표시됨
[2026-02-15 21:40:21] [INFO] [ReportService] 열차 후보군 발견: 9개
[2026-02-15 21:40:50] [INFO] [ReportService] 열차 후보군 발견: 9개
[2026-02-15 21:45:12] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-14 21:40:12)
[2026-02-15 21:50:12] [INFO] [Controller] 테스트 모드: 웹 크롤링 생략, 로컬 DB 사용.
[2026-02-15 21:50:12] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-15 21:45:12)
[2026-02-15 21:55:12] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-15 21:50:12)
[2026-02-15 22:00:13] [INFO] [Controller] 테스트 모드: 웹 크롤링 생략, 로컬 DB 사용.
[2026-02-15 22:00:13] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-15 21:55:12)
[2026-02-15 22:05:13] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-15 22:00:13)
[2026-02-15 22:10:13] [INFO] [Controller] 테스트 모드: 웹 크롤링 생략, 로컬 DB 사용.
[2026-02-15 22:10:13] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-15 22:05:13)
[2026-02-15 22:15:13] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-15 22:10:13)
[2026-02-15 22:20:13] [INFO] [Controller] 테스트 모드: 웹 크롤링 생략, 로컬 DB 사용.
[2026-02-15 22:20:13] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-15 22:15:13)
[2026-02-15 22:25:13] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-15 22:20:13)
[2026-02-15 22:30:13] [INFO] [Controller] 테스트 모드: 웹 크롤링 생략, 로컬 DB 사용.
[2026-02-15 22:30:13] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-15 22:25:13)
[2026-02-15 22:35:14] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-15 22:30:13)
[2026-02-15 22:40:14] [INFO] [Controller] 테스트 모드: 웹 크롤링 생략, 로컬 DB 사용.
[2026-02-15 22:40:14] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-15 22:35:14)
[2026-02-15 22:45:14] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-15 22:40:14)
[2026-02-15 22:50:14] [INFO] [Controller] 테스트 모드: 웹 크롤링 생략, 로컬 DB 사용.
[2026-02-15 22:50:14] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-15 22:45:14)
[2026-02-15 22:55:14] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-15 22:50:14)
[2026-02-15 23:00:14] [INFO] [Controller] 테스트 모드: 웹 크롤링 생략, 로컬 DB 사용.
[2026-02-15 23:00:14] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-15 22:55:14)
[2026-02-15 23:05:14] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-15 23:00:14)
[2026-02-15 23:10:15] [INFO] [Controller] 테스트 모드: 웹 크롤링 생략, 로컬 DB 사용.
[2026-02-15 23:10:15] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-15 23:05:14)
[2026-02-15 23:15:15] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-15 23:10:15)
[2026-02-15 23:20:15] [INFO] [Controller] 테스트 모드: 웹 크롤링 생략, 로컬 DB 사용.
[2026-02-15 23:20:15] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-15 23:15:15)
[2026-02-15 23:25:15] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-15 23:20:15)
[2026-02-15 23:30:15] [INFO] [Controller] 테스트 모드: 웹 크롤링 생략, 로컬 DB 사용.
[2026-02-15 23:30:15] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-15 23:25:15)
[2026-02-15 23:35:15] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-15 23:30:15)
[2026-02-15 23:40:15] [INFO] [Controller] 테스트 모드: 웹 크롤링 생략, 로컬 DB 사용.
[2026-02-15 23:40:15] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-15 23:35:15)
[2026-02-15 23:45:16] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-15 23:40:15)
[2026-02-15 23:50:16] [INFO] [Controller] 테스트 모드: 웹 크롤링 생략, 로컬 DB 사용.
[2026-02-15 23:50:16] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-15 23:45:16)
[2026-02-15 23:55:16] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-15 23:50:16)
[2026-02-16 00:00:16] [INFO] [Controller] 테스트 모드: 웹 크롤링 생략, 로컬 DB 사용.
[2026-02-16 00:00:16] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-15 23:55:16)
[2026-02-16 00:05:16] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-16 00:00:16)
[2026-02-16 00:10:16] [INFO] [Controller] 테스트 모드: 웹 크롤링 생략, 로컬 DB 사용.
[2026-02-16 00:10:16] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-16 00:05:16)
[2026-02-16 00:15:16] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-16 00:10:16)
[2026-02-16 00:20:17] [INFO] [Controller] 테스트 모드: 웹 크롤링 생략, 로컬 DB 사용.
[2026-02-16 00:20:17] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-16 00:15:16)
[2026-02-16 00:25:17] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-16 00:20:17)
[2026-02-16 00:30:17] [INFO] [Controller] 테스트 모드: 웹 크롤링 생략, 로컬 DB 사용.
[2026-02-16 00:30:17] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-16 00:25:17)
[2026-02-16 00:35:17] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-16 00:30:17)
[2026-02-16 00:40:17] [INFO] [Controller] 테스트 모드: 웹 크롤링 생략, 로컬 DB 사용.
[2026-02-16 00:40:17] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-16 00:35:17)
[2026-02-16 00:45:17] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-16 00:40:17)
[2026-02-16 00:50:17] [INFO] [Controller] 테스트 모드: 웹 크롤링 생략, 로컬 DB 사용.
[2026-02-16 00:50:17] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-16 00:45:17)
[2026-02-16 00:55:18] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-16 00:50:17)
[2026-02-16 01:00:18] [INFO] [Controller] 테스트 모드: 웹 크롤링 생략, 로컬 DB 사용.
[2026-02-16 01:00:18] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-16 00:55:18)
[2026-02-16 01:05:18] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-16 01:00:18)
[2026-02-16 01:10:18] [INFO] [Controller] 테스트 모드: 웹 크롤링 생략, 로컬 DB 사용.
[2026-02-16 01:10:18] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-16 01:05:18)
[2026-02-16 01:15:18] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-16 01:10:18)
[2026-02-16 01:20:18] [INFO] [Controller] 테스트 모드: 웹 크롤링 생략, 로컬 DB 사용.
[2026-02-16 01:20:18] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-16 01:15:18)
[2026-02-16 01:25:19] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-16 01:20:18)
[2026-02-16 01:30:19] [INFO] [Controller] 테스트 모드: 웹 크롤링 생략, 로컬 DB 사용.
[2026-02-16 01:30:19] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-16 01:25:19)
[2026-02-16 01:35:19] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-16 01:30:19)
[2026-02-16 01:40:19] [INFO] [Controller] 테스트 모드: 웹 크롤링 생략, 로컬 DB 사용.
[2026-02-16 01:40:19] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-16 01:35:19)
[2026-02-16 01:45:19] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-16 01:40:19)
[2026-02-16 01:50:19] [INFO] [Controller] 테스트 모드: 웹 크롤링 생략, 로컬 DB 사용.
[2026-02-16 01:50:19] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-16 01:45:19)
[2026-02-16 01:55:19] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-16 01:50:19)
[2026-02-16 02:00:20] [INFO] [Controller] 테스트 모드: 웹 크롤링 생략, 로컬 DB 사용.
[2026-02-16 02:00:20] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-16 01:55:19)
[2026-02-16 02:05:20] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-16 02:00:20)
[2026-02-16 02:10:20] [INFO] [Controller] 테스트 모드: 웹 크롤링 생략, 로컬 DB 사용.
[2026-02-16 02:10:20] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-16 02:05:20)
[2026-02-16 02:15:20] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-16 02:10:20)
[2026-02-16 02:20:20] [INFO] [Controller] 테스트 모드: 웹 크롤링 생략, 로컬 DB 사용.
[2026-02-16 02:20:20] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-16 02:15:20)
[2026-02-16 02:25:20] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-16 02:20:20)
[2026-02-16 02:30:20] [INFO] [Controller] 테스트 모드: 웹 크롤링 생략, 로컬 DB 사용.
[2026-02-16 02:30:20] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-16 02:25:20)
[2026-02-16 02:35:21] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-16 02:30:20)
[2026-02-16 02:40:21] [INFO] [Controller] 테스트 모드: 웹 크롤링 생략, 로컬 DB 사용.
[2026-02-16 02:40:21] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-16 02:35:21)
[2026-02-16 02:45:21] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-16 02:40:21)
[2026-02-16 02:50:21] [INFO] [Controller] 테스트 모드: 웹 크롤링 생략, 로컬 DB 사용.
[2026-02-16 02:50:21] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-16 02:45:21)
[2026-02-16 02:55:21] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-16 02:50:21)
[2026-02-16 03:00:21] [INFO] [Controller] 테스트 모드: 웹 크롤링 생략, 로컬 DB 사용.
[2026-02-16 03:00:21] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-16 02:55:21)
[2026-02-16 03:05:21] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-16 03:00:21)
[2026-02-16 03:10:22] [INFO] [Controller] 테스트 모드: 웹 크롤링 생략, 로컬 DB 사용.
[2026-02-16 03:10:22] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-16 03:05:21)
[2026-02-16 03:15:22] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-16 03:10:22)
[2026-02-16 03:20:22] [INFO] [Controller] 테스트 모드: 웹 크롤링 생략, 로컬 DB 사용.
[2026-02-16 03:20:22] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-16 03:15:22)
[2026-02-16 03:25:22] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-16 03:20:22)
[2026-02-16 03:30:22] [INFO] [Controller] 테스트 모드: 웹 크롤링 생략, 로컬 DB 사용.
[2026-02-16 03:30:22] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-16 03:25:22)
[2026-02-16 03:35:22] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-16 03:30:22)
[2026-02-16 03:40:22] [INFO] [Controller] 테스트 모드: 웹 크롤링 생략, 로컬 DB 사용.
[2026-02-16 03:40:22] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-16 03:35:22)
[2026-02-16 03:45:23] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-16 03:40:22)
[2026-02-16 03:50:23] [INFO] [Controller] 테스트 모드: 웹 크롤링 생략, 로컬 DB 사용.
[2026-02-16 03:50:23] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-16 03:45:23)
[2026-02-16 03:55:23] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-16 03:50:23)
[2026-02-16 04:00:23] [INFO] [Controller] 테스트 모드: 웹 크롤링 생략, 로컬 DB 사용.
[2026-02-16 04:00:23] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-16 03:55:23)
[2026-02-16 04:05:23] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-16 04:00:23)
[2026-02-16 04:10:23] [INFO] [Controller] 테스트 모드: 웹 크롤링 생략, 로컬 DB 사용.
[2026-02-16 04:10:23] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-16 04:05:23)
[2026-02-16 04:15:23] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-16 04:10:23)
[2026-02-16 04:20:24] [INFO] [Controller] 테스트 모드: 웹 크롤링 생략, 로컬 DB 사용.
[2026-02-16 04:20:24] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-16 04:15:23)
[2026-02-16 04:25:24] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-16 04:20:24)
[2026-02-16 04:30:24] [INFO] [Controller] 테스트 모드: 웹 크롤링 생략, 로컬 DB 사용.
[2026-02-16 04:30:24] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-16 04:25:24)
[2026-02-16 04:35:24] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-16 04:30:24)
[2026-02-16 04:40:24] [INFO] [Controller] 테스트 모드: 웹 크롤링 생략, 로컬 DB 사용.
[2026-02-16 04:40:24] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-16 04:35:24)
[2026-02-16 04:45:24] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-16 04:40:24)
[2026-02-16 04:50:24] [INFO] [Controller] 테스트 모드: 웹 크롤링 생략, 로컬 DB 사용.
[2026-02-16 04:50:24] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-16 04:45:24)
[2026-02-16 04:55:25] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-16 04:50:24)
[2026-02-16 05:00:25] [INFO] [Controller] 테스트 모드: 웹 크롤링 생략, 로컬 DB 사용.
[2026-02-16 05:00:25] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-16 04:55:25)
[2026-02-16 05:05:25] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-16 05:00:25)
[2026-02-16 05:10:25] [INFO] [Controller] 테스트 모드: 웹 크롤링 생략, 로컬 DB 사용.
[2026-02-16 05:10:25] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-16 05:05:25)
[2026-02-16 05:15:25] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-16 05:10:25)
[2026-02-16 05:20:25] [INFO] [Controller] 테스트 모드: 웹 크롤링 생략, 로컬 DB 사용.
[2026-02-16 05:20:25] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-16 05:15:25)
[2026-02-16 05:25:25] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-16 05:20:25)
[2026-02-16 05:30:25] [INFO] [Controller] 테스트 모드: 웹 크롤링 생략, 로컬 DB 사용.
[2026-02-16 05:30:25] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-16 05:25:25)
[2026-02-16 05:35:26] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-16 05:30:25)
[2026-02-16 05:40:26] [INFO] [Controller] 테스트 모드: 웹 크롤링 생략, 로컬 DB 사용.
[2026-02-16 05:40:26] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-16 05:35:26)
[2026-02-16 05:45:26] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-16 05:40:26)
[2026-02-16 05:50:26] [INFO] [Controller] 테스트 모드: 웹 크롤링 생략, 로컬 DB 사용.
[2026-02-16 05:50:26] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-16 05:45:26)
[2026-02-16 05:55:26] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-16 05:50:26)
[2026-02-16 05:57:06] [INFO] [Controller] 애플리케이션 종료 중...
[2026-02-16 05:57:07] [INFO] [Main] == Application Startup [LIVE MODE] ==
[2026-02-16 05:57:07] [INFO] [Controller] 컨트롤러 초기화 중 (테스트 모드=False)
[2026-02-16 05:57:07] [INFO] [Database] DB 연결 성공: D:\py_train\voc_noti\app\data\voc.db
[2026-02-16 05:57:07] [INFO] [TimetableService] 시각표 로드 완료: 40929 행 (경로: D:\py_train\voc_noti\app\data\line1_sp_timetable.parquet)
[2026-02-16 05:57:08] [INFO] [Controller] 스케줄러 업데이트됨: 크롤링 10분 / 알림 체크 5분
[2026-02-16 05:57:08] [INFO] [Controller] 크롤링 사이클 시작...
[2026-02-16 05:57:08] [INFO] [Controller] 로그인 세션 만료. 재로그인 시도 중...
[2026-02-16 05:57:08] [INFO] [Controller] 시작 알림 표시됨
[2026-02-16 05:57:08] [INFO] [Scraper] 116696 계정으로 로그인 시도 중...
[2026-02-16 05:57:21] [WARNING] [Controller] 재로그인 실패. 다음 사이클에 재시도합니다.
[2026-02-16 05:58:40] [INFO] [Controller] 애플리케이션 종료 중...
[2026-02-16 05:58:44] [INFO] [Main] == Application Startup [TEST MODE] ==
[2026-02-16 05:58:44] [INFO] [Controller] 컨트롤러 초기화 중 (테스트 모드=True)
[2026-02-16 05:58:44] [INFO] [Database] DB 연결 성공: D:\py_train\voc_noti\app\data\voc.db
[2026-02-16 05:58:44] [INFO] [TimetableService] 시각표 로드 완료: 40929 행 (경로: D:\py_train\voc_noti\app\data\line1_sp_timetable.parquet)
[2026-02-16 05:58:44] [INFO] [Controller] 스케줄러 업데이트됨: 크롤링 10분 / 알림 체크 5분
[2026-02-16 05:58:44] [INFO] [Controller] 테스트 모드: 웹 크롤링 생략, 로컬 DB 사용.
[2026-02-16 05:58:44] [INFO] [Controller] 시작 알림 표시됨
[2026-02-16 06:00:51] [INFO] [Controller] 애플리케이션 종료 중...
[2026-02-16 06:04:39] [INFO] [Main] == Application Startup [TEST MODE] ==
[2026-02-16 06:04:39] [INFO] [Controller] 컨트롤러 초기화 중 (테스트 모드=True)
[2026-02-16 06:04:39] [INFO] [Database] DB 연결 성공: D:\py_train\voc_noti\app\data\voc.db
[2026-02-16 06:04:39] [INFO] [TimetableService] 시각표 로드 완료: 40929 행 (경로: D:\py_train\voc_noti\app\data\line1_sp_timetable.parquet)
[2026-02-16 06:04:39] [INFO] [Controller] 스케줄러 업데이트됨: 크롤링 10분 / 알림 체크 5분
[2026-02-16 06:04:39] [INFO] [Controller] 테스트 모드: 웹 크롤링 생략, 로컬 DB 사용.
[2026-02-16 06:04:39] [INFO] [Controller] 시작 알림 표시됨
[2026-02-16 06:09:24] [INFO] [Controller] 애플리케이션 종료 중...
[2026-02-16 06:09:26] [INFO] [Main] == Application Startup [TEST MODE] ==
[2026-02-16 06:09:26] [INFO] [Controller] 컨트롤러 초기화 중 (테스트 모드=True)
[2026-02-16 06:09:26] [INFO] [Database] DB 연결 성공: D:\py_train\voc_noti\app\data\voc.db
[2026-02-16 06:09:26] [INFO] [TimetableService] 시각표 로드 완료: 40929 행 (경로: D:\py_train\voc_noti\app\data\line1_sp_timetable.parquet)
[2026-02-16 06:09:26] [INFO] [Controller] 스케줄러 업데이트됨: 크롤링 10분 / 알림 체크 5분
[2026-02-16 06:09:26] [INFO] [Controller] 테스트 모드: 웹 크롤링 생략, 로컬 DB 사용.
[2026-02-16 06:09:26] [INFO] [Controller] 시작 알림 표시됨
[2026-02-16 06:09:35] [INFO] [ReportService] 열차 후보군 발견: 9개
[2026-02-16 06:09:35] [INFO] [ReportService] 후보군 중 본문 일치 열차번호 발견: 2116
[2026-02-16 06:09:52] [INFO] [ReportService] 열차 후보군 발견: 9개
[2026-02-16 06:09:52] [INFO] [ReportService] 후보군 중 본문 일치 열차번호 발견: 2116
[2026-02-16 06:10:41] [INFO] [Controller] 애플리케이션 종료 중...
[2026-02-16 06:19:00] [INFO] [Main] == Application Startup [LIVE MODE] ==
[2026-02-16 06:19:00] [INFO] [Controller] 컨트롤러 초기화 중 (테스트 모드=False)
[2026-02-16 06:19:00] [INFO] [Database] DB 연결 성공: D:\py_train\voc_noti\app\data\voc.db
[2026-02-16 06:19:00] [INFO] [TimetableService] 시각표 로드 완료: 40929 행 (경로: D:\py_train\voc_noti\app\data\line1_sp_timetable.parquet)
[2026-02-16 06:19:00] [INFO] [Controller] 스케줄러 업데이트됨: 크롤링 10분 / 알림 체크 5분
[2026-02-16 06:19:00] [INFO] [Controller] 크롤링 사이클 시작...
[2026-02-16 06:19:00] [INFO] [Controller] 로그인 세션 만료. 재로그인 시도 중...
[2026-02-16 06:19:00] [INFO] [Controller] 시작 알림 표시됨
[2026-02-16 06:19:01] [INFO] [Scraper] 116696 계정으로 로그인 시도 중...
[2026-02-16 06:19:03] [INFO] [Controller] 애플리케이션 종료 중...
[2026-02-16 06:19:06] [INFO] [Main] == Application Startup [TEST MODE] ==
[2026-02-16 06:19:06] [INFO] [Controller] 컨트롤러 초기화 중 (테스트 모드=True)
[2026-02-16 06:19:06] [INFO] [Database] DB 연결 성공: D:\py_train\voc_noti\app\data\voc.db
[2026-02-16 06:19:06] [INFO] [TimetableService] 시각표 로드 완료: 40929 행 (경로: D:\py_train\voc_noti\app\data\line1_sp_timetable.parquet)
[2026-02-16 06:19:06] [INFO] [Controller] 스케줄러 업데이트됨: 크롤링 10분 / 알림 체크 5분
[2026-02-16 06:19:06] [INFO] [Controller] 테스트 모드: 웹 크롤링 생략, 로컬 DB 사용.
[2026-02-16 06:19:06] [INFO] [Controller] 시작 알림 표시됨
[2026-02-16 06:19:16] [INFO] [ReportService] 열차 후보군 발견: 9개
[2026-02-16 06:19:34] [INFO] [ReportService] 열차 후보군 발견: 9개
[2026-02-16 06:19:34] [INFO] [ReportService] 운행: 다대포해수욕장행
[2026-02-16 06:21:32] [INFO] [Controller] 애플리케이션 종료 중...
[2026-02-16 06:21:35] [INFO] [Main] == Application Startup [TEST MODE] ==
[2026-02-16 06:21:35] [INFO] [Controller] 컨트롤러 초기화 중 (테스트 모드=True)
[2026-02-16 06:21:35] [INFO] [Database] DB 연결 성공: D:\py_train\voc_noti\app\data\voc.db
[2026-02-16 06:21:35] [INFO] [TimetableService] 시각표 로드 완료: 40929 행 (경로: D:\py_train\voc_noti\app\data\line1_sp_timetable.parquet)
[2026-02-16 06:21:35] [INFO] [Controller] 스케줄러 업데이트됨: 크롤링 10분 / 알림 체크 5분
[2026-02-16 06:21:35] [INFO] [Controller] 테스트 모드: 웹 크롤링 생략, 로컬 DB 사용.
[2026-02-16 06:21:35] [INFO] [Controller] 시작 알림 표시됨
[2026-02-16 06:21:43] [INFO] [ReportService] 열차 후보군 발견: 9개
[2026-02-16 06:21:46] [INFO] [ReportService] 열차 후보군 발견: 9개
[2026-02-16 06:21:46] [INFO] [ReportService] 입고 정보도 없고 주박도 아님 (순환 등) : 운행: 다대포해수욕장행
[2026-02-16 06:22:54] [INFO] [Controller] 애플리케이션 종료 중...
[2026-02-16 06:29:29] [INFO] [Main] == Application Startup [TEST MODE] ==
[2026-02-16 06:29:29] [INFO] [Controller] 컨트롤러 초기화 중 (테스트 모드=True)
[2026-02-16 06:29:29] [INFO] [Database] DB 연결 성공: D:\py_train\voc_noti\app\data\voc.db
[2026-02-16 06:29:29] [INFO] [TimetableService] 시각표 로드 완료: 40929 행 (경로: D:\py_train\voc_noti\app\data\line1_sp_timetable.parquet)
[2026-02-16 06:29:29] [INFO] [Controller] 스케줄러 업데이트됨: 크롤링 10분 / 알림 체크 5분
[2026-02-16 06:29:29] [INFO] [Controller] 테스트 모드: 웹 크롤링 생략, 로컬 DB 사용.
[2026-02-16 06:29:29] [INFO] [Controller] 시작 알림 표시됨
[2026-02-16 06:29:38] [INFO] [ReportService] 열차 후보군 발견: 9개
[2026-02-16 06:29:44] [INFO] [ReportService] 열차 후보군 발견: 9개
[2026-02-16 06:29:44] [DEBUG] [ReportService] 주박체크: 열번=1215, 타입=holiday, 리스트=[1301, 1305, 1315, 1317]
[2026-02-16 06:29:44] [INFO] [ReportService] dept_office : 신평차량사업소
[2026-02-16 06:29:44] [INFO] [ReportService] dept_team : 검수1
[2026-02-16 06:29:44] [INFO] [ReportService] reporter_name : 이대석
[2026-02-16 06:29:44] [INFO] [ReportService] reporter_pos : 팀장
[2026-02-16 06:29:44] [INFO] [ReportService] reporter_tel : 200-5115
[2026-02-16 06:29:44] [INFO] [ReportService] raw_content : ▶ 02/13 16:48 문자 수신내용 : (제목없음)부산대역에서 정차할 때 왜 자꾸 확인 안해보고 문 닫나요
방금도 3명이나 끼일 뻔 했고 방금도 끼어서 아파 죽겠습니다
저번달에도 그래서 흰패딩에 다 묻고 세탁비 청구하려다가 참았습니다
제가 늦장부리는 것도 아니고 부산대역은 유동인구가 많아서 사람들도 많이 내리고 어르신들도 많이 내리시는데 내리시는 고 기다렸다가 탈려면 문 닫히네요 제발 잘 좀 보라고 해주세요
내리는 분들 다 밀고 타야될까요?
진짜 저 어디서든 댓글쓰거나 컴플레인 안 가는데 참다참다가 보냅니다 이러다 다음엔 크게 다칠 것 같습니다 제발좀요

문자 답신내용 : 열차 이용에 불편을 드려 죄송합니다. 혹시 해당 열차 지금 탑승 중이십니까? 출입문 주변에 기록된 편성, 호차 확인 부탁드립니다.

▶ 02/13 16:50 문자 수신내용 : 10편성 7호찹니다

처리결과1)) 02/13 16:50 1운행관제 아웃콜 시 최찬희 관제사 받음. 상기 내용 전달.

문자 답신내용 : 열차 이용에 불편을 드려 대단히 죄송합니다. 주의 운전할 수 있도록 해당 부서로 16시 50분에 전달하였습니다. 아울러 출입문에 끼이셨다면 부산대역 051-678-6128 로 전화하셔서 사고 접수 부탁드립니다. 보상의 경우 공사의 귀책사유가 있는 경우에 한해 가능한 점 양해 부탁드립니다. 안전한 열차 운행을 위해 더욱 노력하겠습니다. 건강한 하루 보내세요.

처리결과2)) 02/13 17:14 부산대역 아웃콜 시 여성수 과장 받음. 상기 내용 및 고객 역으로 연락 갈 수 있음 전달 후 고객 전화번호 참고 전달.
[2026-02-16 06:29:44] [INFO] [ReportService] remarks_text : 운행: 다대포해수욕장행
[2026-02-16 06:29:44] [INFO] [ReportService] train_details : {'num': '1215', 'type': '시운전', 'direction': '다대포행(상선)'}
[2026-02-16 06:29:44] [INFO] [ReportService] diagram_type : weekday
[2026-02-16 06:29:44] [INFO] [ReportService] train_candidates : [{'line': 1, 'diagram_type': 'weekday', 'duty_id': 12, 'train_number': 2192, 'direction': 'down', 'run_type': 'regular', 'depot': '16:36:30', 'depot_detail': None, 'track_no': 110, 'station': '부산대학앞', 'seq': 7, 'time': '16:23:35', 'diff_min': 25.0}, {'line': 1, 'diagram_type': 'weekday', 'duty_id': 33, 'train_number': 1215, 'direction': 'up', 'run_type': 'regular', 'depot': '16:15:00', 'depot_detail': None, 'track_no': 278, 'station': '부산대학앞', 'seq': 7, 'time': '16:26:55', 'diff_min': 22.0}, {'line': 1, 'diagram_type': 'weekday', 'duty_id': 41, 'train_number': 2194, 'direction': 'down', 'run_type': 'regular', 'depot': '16:43:00', 'depot_detail': None, 'track_no': 325, 'station': '부산대학앞', 'seq': 7, 'time': '16:30:05', 'diff_min': 18.0}, {'line': 1, 'diagram_type': 'weekday', 'duty_id': 8, 'train_number': 1217, 'direction': 'up', 'run_type': 'regular', 'depot': '16:20:00', 'depot_detail': None, 'track_no': 82, 'station': '부산대학앞', 'seq': 7, 'time': '16:31:55', 'diff_min': 17.0}, {'line': 1, 'diagram_type': 'weekday', 'duty_id': 43, 'train_number': 2196, 'direction': 'down', 'run_type': 'regular', 'depot': '16:49:30', 'depot_detail': None, 'track_no': 340, 'station': '부산대학앞', 'seq': 7, 'time': '16:36:35', 'diff_min': 12.0}, {'line': 1, 'diagram_type': 'weekday', 'duty_id': 35, 'train_number': 1219, 'direction': 'up', 'run_type': 'regular', 'depot': '16:25:00', 'depot_detail': None, 'track_no': 291, 'station': '부산대학앞', 'seq': 7, 'time': '16:36:55', 'diff_min': 12.0}, {'line': 1, 'diagram_type': 'weekday', 'duty_id': 37, 'train_number': 1221, 'direction': 'up', 'run_type': 'regular', 'depot': '16:30:00', 'depot_detail': None, 'track_no': 304, 'station': '부산대학앞', 'seq': 7, 'time': '16:41:55', 'diff_min': 7.0}, {'line': 1, 'diagram_type': 'weekday', 'duty_id': 7, 'train_number': 2198, 'direction': 'down', 'run_type': 'regular', 'depot': '16:56:00', 'depot_detail': None, 'track_no': 67, 'station': '부산대학앞', 'seq': 7, 'time': '16:43:05', 'diff_min': 5.0}, {'line': 1, 'diagram_type': 'weekday', 'duty_id': 49, 'train_number': 1223, 'direction': 'up', 'run_type': 'depot_out', 'depot': '16:35:00', 'depot_detail': '노포출고', 'track_no': 369, 'station': '부산대학앞', 'seq': 7, 'time': '16:46:55', 'diff_min': 2.0}]
[2026-02-16 06:29:44] [INFO] [ReportService] doc_date : 2026.02.13
[2026-02-16 06:29:44] [INFO] [ReportService] line_str : 1호선
[2026-02-16 06:29:44] [INFO] [ReportService] set_str : 10
[2026-02-16 06:29:44] [INFO] [ReportService] car_str : 1
[2026-02-16 06:29:44] [INFO] [ReportService] train_num : 1215
[2026-02-16 06:29:44] [INFO] [ReportService] action_taken : ▷ 1215열차 10 1

 - ○ 입고 후 조치예정
[2026-02-16 06:29:44] [INFO] [ReportService] base_name : 1호선 1215열차 10 1 부산대역에서 출입문 끼임 관련
[2026-02-16 06:31:11] [INFO] [Controller] 애플리케이션 종료 중...
[2026-02-16 06:39:43] [INFO] [Main] == Application Startup [TEST MODE] ==
[2026-02-16 06:39:43] [INFO] [Controller] 컨트롤러 초기화 중 (테스트 모드=True)
[2026-02-16 06:39:43] [INFO] [Database] DB 연결 성공: D:\py_train\voc_noti\app\data\voc.db
[2026-02-16 06:39:43] [INFO] [TimetableService] 시각표 로드 완료: 40929 행 (경로: D:\py_train\voc_noti\app\data\line1_sp_timetable.parquet)
[2026-02-16 06:39:43] [INFO] [Controller] 스케줄러 업데이트됨: 크롤링 10분 / 알림 체크 5분
[2026-02-16 06:39:43] [INFO] [Controller] 테스트 모드: 웹 크롤링 생략, 로컬 DB 사용.
[2026-02-16 06:39:43] [INFO] [Controller] 시작 알림 표시됨
[2026-02-16 06:39:52] [INFO] [ReportService] 열차 후보군 발견: 9개
[2026-02-16 06:40:04] [INFO] [ReportService] 열차 후보군 발견: 9개
[2026-02-16 06:40:04] [INFO] [ReportService] 주박판단: 다이아=33, 현재열차=1215, 최종열차=1339, 주박지=다대포해수욕장
[2026-02-16 06:40:04] [INFO] [ReportService] dept_office : 신평차량사업소
[2026-02-16 06:40:04] [INFO] [ReportService] dept_team : 검수1
[2026-02-16 06:40:04] [INFO] [ReportService] reporter_name : 이대석
[2026-02-16 06:40:04] [INFO] [ReportService] reporter_pos : 팀장
[2026-02-16 06:40:04] [INFO] [ReportService] reporter_tel : 200-5115
[2026-02-16 06:40:04] [INFO] [ReportService] raw_content : ▶ 02/13 16:48 문자 수신내용 : (제목없음)부산대역에서 정차할 때 왜 자꾸 확인 안해보고 문 닫나요
방금도 3명이나 끼일 뻔 했고 방금도 끼어서 아파 죽겠습니다
저번달에도 그래서 흰패딩에 다 묻고 세탁비 청구하려다가 참았습니다
제가 늦장부리는 것도 아니고 부산대역은 유동인구가 많아서 사람들도 많이 내리고 어르신들도 많이 내리시는데 내리시는 고 기다렸다가 탈려면 문 닫히네요 제발 잘 좀 보라고 해주세요
내리는 분들 다 밀고 타야될까요?
진짜 저 어디서든 댓글쓰거나 컴플레인 안 가는데 참다참다가 보냅니다 이러다 다음엔 크게 다칠 것 같습니다 제발좀요

문자 답신내용 : 열차 이용에 불편을 드려 죄송합니다. 혹시 해당 열차 지금 탑승 중이십니까? 출입문 주변에 기록된 편성, 호차 확인 부탁드립니다.

▶ 02/13 16:50 문자 수신내용 : 10편성 7호찹니다

처리결과1)) 02/13 16:50 1운행관제 아웃콜 시 최찬희 관제사 받음. 상기 내용 전달.

문자 답신내용 : 열차 이용에 불편을 드려 대단히 죄송합니다. 주의 운전할 수 있도록 해당 부서로 16시 50분에 전달하였습니다. 아울러 출입문에 끼이셨다면 부산대역 051-678-6128 로 전화하셔서 사고 접수 부탁드립니다. 보상의 경우 공사의 귀책사유가 있는 경우에 한해 가능한 점 양해 부탁드립니다. 안전한 열차 운행을 위해 더욱 노력하겠습니다. 건강한 하루 보내세요.

처리결과2)) 02/13 17:14 부산대역 아웃콜 시 여성수 과장 받음. 상기 내용 및 고객 역으로 연락 갈 수 있음 전달 후 고객 전화번호 참고 전달.
[2026-02-16 06:40:04] [INFO] [ReportService] remarks_text : 다대포해수욕장정기입고예정 (2/14)18:42경
[2026-02-16 06:40:04] [INFO] [ReportService] train_details : {'num': '1215', 'type': '시운전', 'direction': '다대포행(상선)'}
[2026-02-16 06:40:04] [INFO] [ReportService] diagram_type : weekday
[2026-02-16 06:40:04] [INFO] [ReportService] train_candidates : [{'line': 1, 'diagram_type': 'weekday', 'duty_id': 12, 'train_number': 2192, 'direction': 'down', 'run_type': 'regular', 'depot': '16:36:30', 'depot_detail': None, 'track_no': 110, 'station': '부산대학앞', 'seq': 7, 'time': '16:23:35', 'diff_min': 25.0}, {'line': 1, 'diagram_type': 'weekday', 'duty_id': 33, 'train_number': 1215, 'direction': 'up', 'run_type': 'regular', 'depot': '16:15:00', 'depot_detail': None, 'track_no': 278, 'station': '부산대학앞', 'seq': 7, 'time': '16:26:55', 'diff_min': 22.0}, {'line': 1, 'diagram_type': 'weekday', 'duty_id': 41, 'train_number': 2194, 'direction': 'down', 'run_type': 'regular', 'depot': '16:43:00', 'depot_detail': None, 'track_no': 325, 'station': '부산대학앞', 'seq': 7, 'time': '16:30:05', 'diff_min': 18.0}, {'line': 1, 'diagram_type': 'weekday', 'duty_id': 8, 'train_number': 1217, 'direction': 'up', 'run_type': 'regular', 'depot': '16:20:00', 'depot_detail': None, 'track_no': 82, 'station': '부산대학앞', 'seq': 7, 'time': '16:31:55', 'diff_min': 17.0}, {'line': 1, 'diagram_type': 'weekday', 'duty_id': 43, 'train_number': 2196, 'direction': 'down', 'run_type': 'regular', 'depot': '16:49:30', 'depot_detail': None, 'track_no': 340, 'station': '부산대학앞', 'seq': 7, 'time': '16:36:35', 'diff_min': 12.0}, {'line': 1, 'diagram_type': 'weekday', 'duty_id': 35, 'train_number': 1219, 'direction': 'up', 'run_type': 'regular', 'depot': '16:25:00', 'depot_detail': None, 'track_no': 291, 'station': '부산대학앞', 'seq': 7, 'time': '16:36:55', 'diff_min': 12.0}, {'line': 1, 'diagram_type': 'weekday', 'duty_id': 37, 'train_number': 1221, 'direction': 'up', 'run_type': 'regular', 'depot': '16:30:00', 'depot_detail': None, 'track_no': 304, 'station': '부산대학앞', 'seq': 7, 'time': '16:41:55', 'diff_min': 7.0}, {'line': 1, 'diagram_type': 'weekday', 'duty_id': 7, 'train_number': 2198, 'direction': 'down', 'run_type': 'regular', 'depot': '16:56:00', 'depot_detail': None, 'track_no': 67, 'station': '부산대학앞', 'seq': 7, 'time': '16:43:05', 'diff_min': 5.0}, {'line': 1, 'diagram_type': 'weekday', 'duty_id': 49, 'train_number': 1223, 'direction': 'up', 'run_type': 'depot_out', 'depot': '16:35:00', 'depot_detail': '노포출고', 'track_no': 369, 'station': '부산대학앞', 'seq': 7, 'time': '16:46:55', 'diff_min': 2.0}]
[2026-02-16 06:40:04] [INFO] [ReportService] doc_date : 2026.02.13
[2026-02-16 06:40:04] [INFO] [ReportService] line_str : 1호선
[2026-02-16 06:40:04] [INFO] [ReportService] set_str : 10편성
[2026-02-16 06:40:04] [INFO] [ReportService] car_str : 1호차
[2026-02-16 06:40:04] [INFO] [ReportService] train_num : 1215
[2026-02-16 06:40:04] [INFO] [ReportService] action_taken : ▷ 1215열차 10편성 1호차

 - ○ 입고 후 조치예정
[2026-02-16 06:43:04] [INFO] [Controller] 애플리케이션 종료 중...
[2026-02-16 07:05:56] [INFO] [Main] == Application Startup [TEST MODE] ==
[2026-02-16 07:05:56] [INFO] [Controller] 컨트롤러 초기화 중 (테스트 모드=True)
[2026-02-16 07:05:56] [INFO] [Database] DB 연결 성공: D:\py_train\voc_noti\app\data\voc.db
[2026-02-16 07:05:56] [INFO] [TimetableService] 시각표 로드 완료: 40929 행 (경로: D:\py_train\voc_noti\app\data\line1_sp_timetable.parquet)
[2026-02-16 07:05:56] [INFO] [Controller] 스케줄러 업데이트됨: 크롤링 10분 / 알림 체크 5분
[2026-02-16 07:05:56] [INFO] [Controller] 테스트 모드: 웹 크롤링 생략, 로컬 DB 사용.
[2026-02-16 07:05:56] [INFO] [Controller] 시작 알림 표시됨
[2026-02-16 07:06:04] [INFO] [ReportService] 열차 후보군 발견: 9개
[2026-02-16 07:06:06] [INFO] [ReportService] 열차 후보군 발견: 9개
[2026-02-16 07:06:06] [INFO] [ReportService] 주박체크: 다이아=33, 최종열차=1339, 주박지=다대포해수욕장
[2026-02-16 07:06:06] [INFO] [ReportService] dept_office : 신평차량사업소
[2026-02-16 07:06:06] [INFO] [ReportService] dept_team : 검수1
[2026-02-16 07:06:06] [INFO] [ReportService] reporter_name : 이대석
[2026-02-16 07:06:06] [INFO] [ReportService] reporter_pos : 팀장
[2026-02-16 07:06:06] [INFO] [ReportService] reporter_tel : 200-5115
[2026-02-16 07:06:06] [INFO] [ReportService] raw_content : ▶ 02/13 16:48 문자 수신내용 : (제목없음)부산대역에서 정차할 때 왜 자꾸 확인 안해보고 문 닫나요
방금도 3명이나 끼일 뻔 했고 방금도 끼어서 아파 죽겠습니다
저번달에도 그래서 흰패딩에 다 묻고 세탁비 청구하려다가 참았습니다
제가 늦장부리는 것도 아니고 부산대역은 유동인구가 많아서 사람들도 많이 내리고 어르신들도 많이 내리시는데 내리시는 고 기다렸다가 탈려면 문 닫히네요 제발 잘 좀 보라고 해주세요
내리는 분들 다 밀고 타야될까요?
진짜 저 어디서든 댓글쓰거나 컴플레인 안 가는데 참다참다가 보냅니다 이러다 다음엔 크게 다칠 것 같습니다 제발좀요

문자 답신내용 : 열차 이용에 불편을 드려 죄송합니다. 혹시 해당 열차 지금 탑승 중이십니까? 출입문 주변에 기록된 편성, 호차 확인 부탁드립니다.

▶ 02/13 16:50 문자 수신내용 : 10편성 7호찹니다

처리결과1)) 02/13 16:50 1운행관제 아웃콜 시 최찬희 관제사 받음. 상기 내용 전달.

문자 답신내용 : 열차 이용에 불편을 드려 대단히 죄송합니다. 주의 운전할 수 있도록 해당 부서로 16시 50분에 전달하였습니다. 아울러 출입문에 끼이셨다면 부산대역 051-678-6128 로 전화하셔서 사고 접수 부탁드립니다. 보상의 경우 공사의 귀책사유가 있는 경우에 한해 가능한 점 양해 부탁드립니다. 안전한 열차 운행을 위해 더욱 노력하겠습니다. 건강한 하루 보내세요.

처리결과2)) 02/13 17:14 부산대역 아웃콜 시 여성수 과장 받음. 상기 내용 및 고객 역으로 연락 갈 수 있음 전달 후 고객 전화번호 참고 전달.
[2026-02-16 07:06:06] [INFO] [ReportService] remarks_text : 다대포해수욕장정기입고예정 (2/14, #2270)18:42경
[2026-02-16 07:06:06] [INFO] [ReportService] train_details : {'num': '1215', 'type': '시운전', 'direction': '다대포행(상선)'}
[2026-02-16 07:06:06] [INFO] [ReportService] diagram_type : weekday
[2026-02-16 07:06:06] [INFO] [ReportService] train_candidates : [{'line': 1, 'diagram_type': 'weekday', 'duty_id': 12, 'train_number': 2192, 'direction': 'down', 'run_type': 'regular', 'depot': '16:36:30', 'depot_detail': None, 'track_no': 110, 'station': '부산대학앞', 'seq': 7, 'time': '16:23:35', 'diff_min': 25.0}, {'line': 1, 'diagram_type': 'weekday', 'duty_id': 33, 'train_number': 1215, 'direction': 'up', 'run_type': 'regular', 'depot': '16:15:00', 'depot_detail': None, 'track_no': 278, 'station': '부산대학앞', 'seq': 7, 'time': '16:26:55', 'diff_min': 22.0}, {'line': 1, 'diagram_type': 'weekday', 'duty_id': 41, 'train_number': 2194, 'direction': 'down', 'run_type': 'regular', 'depot': '16:43:00', 'depot_detail': None, 'track_no': 325, 'station': '부산대학앞', 'seq': 7, 'time': '16:30:05', 'diff_min': 18.0}, {'line': 1, 'diagram_type': 'weekday', 'duty_id': 8, 'train_number': 1217, 'direction': 'up', 'run_type': 'regular', 'depot': '16:20:00', 'depot_detail': None, 'track_no': 82, 'station': '부산대학앞', 'seq': 7, 'time': '16:31:55', 'diff_min': 17.0}, {'line': 1, 'diagram_type': 'weekday', 'duty_id': 43, 'train_number': 2196, 'direction': 'down', 'run_type': 'regular', 'depot': '16:49:30', 'depot_detail': None, 'track_no': 340, 'station': '부산대학앞', 'seq': 7, 'time': '16:36:35', 'diff_min': 12.0}, {'line': 1, 'diagram_type': 'weekday', 'duty_id': 35, 'train_number': 1219, 'direction': 'up', 'run_type': 'regular', 'depot': '16:25:00', 'depot_detail': None, 'track_no': 291, 'station': '부산대학앞', 'seq': 7, 'time': '16:36:55', 'diff_min': 12.0}, {'line': 1, 'diagram_type': 'weekday', 'duty_id': 37, 'train_number': 1221, 'direction': 'up', 'run_type': 'regular', 'depot': '16:30:00', 'depot_detail': None, 'track_no': 304, 'station': '부산대학앞', 'seq': 7, 'time': '16:41:55', 'diff_min': 7.0}, {'line': 1, 'diagram_type': 'weekday', 'duty_id': 7, 'train_number': 2198, 'direction': 'down', 'run_type': 'regular', 'depot': '16:56:00', 'depot_detail': None, 'track_no': 67, 'station': '부산대학앞', 'seq': 7, 'time': '16:43:05', 'diff_min': 5.0}, {'line': 1, 'diagram_type': 'weekday', 'duty_id': 49, 'train_number': 1223, 'direction': 'up', 'run_type': 'depot_out', 'depot': '16:35:00', 'depot_detail': '노포출고', 'track_no': 369, 'station': '부산대학앞', 'seq': 7, 'time': '16:46:55', 'diff_min': 2.0}]
[2026-02-16 07:06:06] [INFO] [ReportService] doc_date : 2026.02.13
[2026-02-16 07:06:06] [INFO] [ReportService] line_str : 1호선
[2026-02-16 07:06:06] [INFO] [ReportService] set_str : 10편성
[2026-02-16 07:06:06] [INFO] [ReportService] car_str : 1호차
[2026-02-16 07:06:06] [INFO] [ReportService] train_num : 1215
[2026-02-16 07:06:06] [INFO] [ReportService] action_taken : ▷ 1215열차 10편성 1호차

 - ○ 입고 후 조치예정
[2026-02-16 07:13:45] [INFO] [Main] == Application Startup [TEST MODE] ==
[2026-02-16 07:13:45] [INFO] [Controller] 컨트롤러 초기화 중 (테스트 모드=True)
[2026-02-16 07:13:45] [INFO] [Database] DB 연결 성공: D:\py_train\voc_noti\app\data\voc.db
[2026-02-16 07:13:45] [INFO] [TimetableService] 시각표 로드 완료: 40929 행 (경로: D:\py_train\voc_noti\app\data\line1_sp_timetable.parquet)
[2026-02-16 07:13:45] [INFO] [Controller] 스케줄러 업데이트됨: 크롤링 10분 / 알림 체크 5분
[2026-02-16 07:13:45] [INFO] [Controller] 테스트 모드: 웹 크롤링 생략, 로컬 DB 사용.
[2026-02-16 07:13:45] [INFO] [Controller] 시작 알림 표시됨
[2026-02-16 07:13:54] [INFO] [ReportService] 열차 후보군 발견: 9개
[2026-02-16 07:13:56] [INFO] [ReportService] 열차 후보군 발견: 9개
[2026-02-16 07:13:56] [INFO] [ReportService] 주박체크: 다이아=33, 최종열차=1339, 주박지=다대포해수욕장
[2026-02-16 07:13:56] [INFO] [ReportService] dept_office : 신평차량사업소
[2026-02-16 07:13:56] [INFO] [ReportService] dept_team : 검수1
[2026-02-16 07:13:56] [INFO] [ReportService] reporter_name : 이대석
[2026-02-16 07:13:56] [INFO] [ReportService] reporter_pos : 팀장
[2026-02-16 07:13:56] [INFO] [ReportService] reporter_tel : 200-5115
[2026-02-16 07:13:56] [INFO] [ReportService] raw_content : ▶ 02/13 16:48 문자 수신내용 : (제목없음)부산대역에서 정차할 때 왜 자꾸 확인 안해보고 문 닫나요
방금도 3명이나 끼일 뻔 했고 방금도 끼어서 아파 죽겠습니다
저번달에도 그래서 흰패딩에 다 묻고 세탁비 청구하려다가 참았습니다
제가 늦장부리는 것도 아니고 부산대역은 유동인구가 많아서 사람들도 많이 내리고 어르신들도 많이 내리시는데 내리시는 고 기다렸다가 탈려면 문 닫히네요 제발 잘 좀 보라고 해주세요
내리는 분들 다 밀고 타야될까요?
진짜 저 어디서든 댓글쓰거나 컴플레인 안 가는데 참다참다가 보냅니다 이러다 다음엔 크게 다칠 것 같습니다 제발좀요

문자 답신내용 : 열차 이용에 불편을 드려 죄송합니다. 혹시 해당 열차 지금 탑승 중이십니까? 출입문 주변에 기록된 편성, 호차 확인 부탁드립니다.

▶ 02/13 16:50 문자 수신내용 : 10편성 7호찹니다

처리결과1)) 02/13 16:50 1운행관제 아웃콜 시 최찬희 관제사 받음. 상기 내용 전달.

문자 답신내용 : 열차 이용에 불편을 드려 대단히 죄송합니다. 주의 운전할 수 있도록 해당 부서로 16시 50분에 전달하였습니다. 아울러 출입문에 끼이셨다면 부산대역 051-678-6128 로 전화하셔서 사고 접수 부탁드립니다. 보상의 경우 공사의 귀책사유가 있는 경우에 한해 가능한 점 양해 부탁드립니다. 안전한 열차 운행을 위해 더욱 노력하겠습니다. 건강한 하루 보내세요.

처리결과2)) 02/13 17:14 부산대역 아웃콜 시 여성수 과장 받음. 상기 내용 및 고객 역으로 연락 갈 수 있음 전달 후 고객 전화번호 참고 전달.
[2026-02-16 07:13:56] [INFO] [ReportService] remarks_text : 노포정기입고예정 (2/14, #2270)20:00경
[2026-02-16 07:13:56] [INFO] [ReportService] train_details : {'num': '1215', 'type': '시운전', 'direction': '다대포행(상선)'}
[2026-02-16 07:13:56] [INFO] [ReportService] diagram_type : weekday
[2026-02-16 07:13:56] [INFO] [ReportService] train_candidates : [{'line': 1, 'diagram_type': 'weekday', 'duty_id': 12, 'train_number': 2192, 'direction': 'down', 'run_type': 'regular', 'depot': '16:36:30', 'depot_detail': None, 'track_no': 110, 'station': '부산대학앞', 'seq': 7, 'time': '16:23:35', 'diff_min': 25.0}, {'line': 1, 'diagram_type': 'weekday', 'duty_id': 33, 'train_number': 1215, 'direction': 'up', 'run_type': 'regular', 'depot': '16:15:00', 'depot_detail': None, 'track_no': 278, 'station': '부산대학앞', 'seq': 7, 'time': '16:26:55', 'diff_min': 22.0}, {'line': 1, 'diagram_type': 'weekday', 'duty_id': 41, 'train_number': 2194, 'direction': 'down', 'run_type': 'regular', 'depot': '16:43:00', 'depot_detail': None, 'track_no': 325, 'station': '부산대학앞', 'seq': 7, 'time': '16:30:05', 'diff_min': 18.0}, {'line': 1, 'diagram_type': 'weekday', 'duty_id': 8, 'train_number': 1217, 'direction': 'up', 'run_type': 'regular', 'depot': '16:20:00', 'depot_detail': None, 'track_no': 82, 'station': '부산대학앞', 'seq': 7, 'time': '16:31:55', 'diff_min': 17.0}, {'line': 1, 'diagram_type': 'weekday', 'duty_id': 43, 'train_number': 2196, 'direction': 'down', 'run_type': 'regular', 'depot': '16:49:30', 'depot_detail': None, 'track_no': 340, 'station': '부산대학앞', 'seq': 7, 'time': '16:36:35', 'diff_min': 12.0}, {'line': 1, 'diagram_type': 'weekday', 'duty_id': 35, 'train_number': 1219, 'direction': 'up', 'run_type': 'regular', 'depot': '16:25:00', 'depot_detail': None, 'track_no': 291, 'station': '부산대학앞', 'seq': 7, 'time': '16:36:55', 'diff_min': 12.0}, {'line': 1, 'diagram_type': 'weekday', 'duty_id': 37, 'train_number': 1221, 'direction': 'up', 'run_type': 'regular', 'depot': '16:30:00', 'depot_detail': None, 'track_no': 304, 'station': '부산대학앞', 'seq': 7, 'time': '16:41:55', 'diff_min': 7.0}, {'line': 1, 'diagram_type': 'weekday', 'duty_id': 7, 'train_number': 2198, 'direction': 'down', 'run_type': 'regular', 'depot': '16:56:00', 'depot_detail': None, 'track_no': 67, 'station': '부산대학앞', 'seq': 7, 'time': '16:43:05', 'diff_min': 5.0}, {'line': 1, 'diagram_type': 'weekday', 'duty_id': 49, 'train_number': 1223, 'direction': 'up', 'run_type': 'depot_out', 'depot': '16:35:00', 'depot_detail': '노포출고', 'track_no': 369, 'station': '부산대학앞', 'seq': 7, 'time': '16:46:55', 'diff_min': 2.0}]
[2026-02-16 07:13:56] [INFO] [ReportService] doc_date : 2026.02.13
[2026-02-16 07:13:56] [INFO] [ReportService] line_str : 1호선
[2026-02-16 07:13:56] [INFO] [ReportService] set_str : 10편성
[2026-02-16 07:13:56] [INFO] [ReportService] car_str : 1호차
[2026-02-16 07:13:56] [INFO] [ReportService] train_num : 1215
[2026-02-16 07:13:56] [INFO] [ReportService] action_taken : ▷ 1215열차 10편성 1호차

 - ○ 입고 후 조치예정
[2026-02-16 07:14:11] [INFO] [ReportService] 열차 후보군 발견: 9개
[2026-02-16 07:14:14] [INFO] [ReportService] 열차 후보군 발견: 9개
[2026-02-16 07:14:14] [INFO] [ReportService] 주박체크: 다이아=33, 최종열차=1339, 주박지=다대포해수욕장
[2026-02-16 07:14:14] [INFO] [ReportService] dept_office : 신평차량사업소
[2026-02-16 07:14:14] [INFO] [ReportService] dept_team : 검수1
[2026-02-16 07:14:14] [INFO] [ReportService] reporter_name : 이대석
[2026-02-16 07:14:14] [INFO] [ReportService] reporter_pos : 팀장
[2026-02-16 07:14:14] [INFO] [ReportService] reporter_tel : 200-5115
[2026-02-16 07:14:14] [INFO] [ReportService] raw_content : ▶ 02/13 16:48 문자 수신내용 : (제목없음)부산대역에서 정차할 때 왜 자꾸 확인 안해보고 문 닫나요
방금도 3명이나 끼일 뻔 했고 방금도 끼어서 아파 죽겠습니다
저번달에도 그래서 흰패딩에 다 묻고 세탁비 청구하려다가 참았습니다
제가 늦장부리는 것도 아니고 부산대역은 유동인구가 많아서 사람들도 많이 내리고 어르신들도 많이 내리시는데 내리시는 고 기다렸다가 탈려면 문 닫히네요 제발 잘 좀 보라고 해주세요
내리는 분들 다 밀고 타야될까요?
진짜 저 어디서든 댓글쓰거나 컴플레인 안 가는데 참다참다가 보냅니다 이러다 다음엔 크게 다칠 것 같습니다 제발좀요

문자 답신내용 : 열차 이용에 불편을 드려 죄송합니다. 혹시 해당 열차 지금 탑승 중이십니까? 출입문 주변에 기록된 편성, 호차 확인 부탁드립니다.

▶ 02/13 16:50 문자 수신내용 : 10편성 7호찹니다

처리결과1)) 02/13 16:50 1운행관제 아웃콜 시 최찬희 관제사 받음. 상기 내용 전달.

문자 답신내용 : 열차 이용에 불편을 드려 대단히 죄송합니다. 주의 운전할 수 있도록 해당 부서로 16시 50분에 전달하였습니다. 아울러 출입문에 끼이셨다면 부산대역 051-678-6128 로 전화하셔서 사고 접수 부탁드립니다. 보상의 경우 공사의 귀책사유가 있는 경우에 한해 가능한 점 양해 부탁드립니다. 안전한 열차 운행을 위해 더욱 노력하겠습니다. 건강한 하루 보내세요.

처리결과2)) 02/13 17:14 부산대역 아웃콜 시 여성수 과장 받음. 상기 내용 및 고객 역으로 연락 갈 수 있음 전달 후 고객 전화번호 참고 전달.
[2026-02-16 07:14:14] [INFO] [ReportService] remarks_text : 노포정기입고예정 (2/14, #2270)20:00경
[2026-02-16 07:14:14] [INFO] [ReportService] train_details : {'num': '1215', 'type': '시운전', 'direction': '다대포행(상선)'}
[2026-02-16 07:14:14] [INFO] [ReportService] diagram_type : weekday
[2026-02-16 07:14:14] [INFO] [ReportService] train_candidates : [{'line': 1, 'diagram_type': 'weekday', 'duty_id': 12, 'train_number': 2192, 'direction': 'down', 'run_type': 'regular', 'depot': '16:36:30', 'depot_detail': None, 'track_no': 110, 'station': '부산대학앞', 'seq': 7, 'time': '16:23:35', 'diff_min': 25.0}, {'line': 1, 'diagram_type': 'weekday', 'duty_id': 33, 'train_number': 1215, 'direction': 'up', 'run_type': 'regular', 'depot': '16:15:00', 'depot_detail': None, 'track_no': 278, 'station': '부산대학앞', 'seq': 7, 'time': '16:26:55', 'diff_min': 22.0}, {'line': 1, 'diagram_type': 'weekday', 'duty_id': 41, 'train_number': 2194, 'direction': 'down', 'run_type': 'regular', 'depot': '16:43:00', 'depot_detail': None, 'track_no': 325, 'station': '부산대학앞', 'seq': 7, 'time': '16:30:05', 'diff_min': 18.0}, {'line': 1, 'diagram_type': 'weekday', 'duty_id': 8, 'train_number': 1217, 'direction': 'up', 'run_type': 'regular', 'depot': '16:20:00', 'depot_detail': None, 'track_no': 82, 'station': '부산대학앞', 'seq': 7, 'time': '16:31:55', 'diff_min': 17.0}, {'line': 1, 'diagram_type': 'weekday', 'duty_id': 43, 'train_number': 2196, 'direction': 'down', 'run_type': 'regular', 'depot': '16:49:30', 'depot_detail': None, 'track_no': 340, 'station': '부산대학앞', 'seq': 7, 'time': '16:36:35', 'diff_min': 12.0}, {'line': 1, 'diagram_type': 'weekday', 'duty_id': 35, 'train_number': 1219, 'direction': 'up', 'run_type': 'regular', 'depot': '16:25:00', 'depot_detail': None, 'track_no': 291, 'station': '부산대학앞', 'seq': 7, 'time': '16:36:55', 'diff_min': 12.0}, {'line': 1, 'diagram_type': 'weekday', 'duty_id': 37, 'train_number': 1221, 'direction': 'up', 'run_type': 'regular', 'depot': '16:30:00', 'depot_detail': None, 'track_no': 304, 'station': '부산대학앞', 'seq': 7, 'time': '16:41:55', 'diff_min': 7.0}, {'line': 1, 'diagram_type': 'weekday', 'duty_id': 7, 'train_number': 2198, 'direction': 'down', 'run_type': 'regular', 'depot': '16:56:00', 'depot_detail': None, 'track_no': 67, 'station': '부산대학앞', 'seq': 7, 'time': '16:43:05', 'diff_min': 5.0}, {'line': 1, 'diagram_type': 'weekday', 'duty_id': 49, 'train_number': 1223, 'direction': 'up', 'run_type': 'depot_out', 'depot': '16:35:00', 'depot_detail': '노포출고', 'track_no': 369, 'station': '부산대학앞', 'seq': 7, 'time': '16:46:55', 'diff_min': 2.0}]
[2026-02-16 07:14:14] [INFO] [ReportService] doc_date : 2026.02.13
[2026-02-16 07:14:14] [INFO] [ReportService] line_str : 1호선
[2026-02-16 07:14:14] [INFO] [ReportService] set_str : 10편성
[2026-02-16 07:14:14] [INFO] [ReportService] car_str : 1호차
[2026-02-16 07:14:14] [INFO] [ReportService] train_num : 1215
[2026-02-16 07:14:14] [INFO] [ReportService] action_taken : ▷ 1215열차 10편성 1호차

 - ○ 입고 후 조치예정
[2026-02-16 07:14:33] [INFO] [ReportService] 열차 후보군 발견: 9개
[2026-02-16 07:14:37] [INFO] [ReportService] 열차 후보군 발견: 9개
[2026-02-16 07:14:37] [INFO] [ReportService] dept_office : 신평차량사업소
[2026-02-16 07:14:37] [INFO] [ReportService] dept_team : 검수1
[2026-02-16 07:14:37] [INFO] [ReportService] reporter_name : 이대석
[2026-02-16 07:14:37] [INFO] [ReportService] reporter_pos : 팀장
[2026-02-16 07:14:37] [INFO] [ReportService] reporter_tel : 200-5115
[2026-02-16 07:14:37] [INFO] [ReportService] raw_content : ▶ 02/13 16:48 문자 수신내용 : (제목없음)부산대역에서 정차할 때 왜 자꾸 확인 안해보고 문 닫나요
방금도 3명이나 끼일 뻔 했고 방금도 끼어서 아파 죽겠습니다
저번달에도 그래서 흰패딩에 다 묻고 세탁비 청구하려다가 참았습니다
제가 늦장부리는 것도 아니고 부산대역은 유동인구가 많아서 사람들도 많이 내리고 어르신들도 많이 내리시는데 내리시는 고 기다렸다가 탈려면 문 닫히네요 제발 잘 좀 보라고 해주세요
내리는 분들 다 밀고 타야될까요?
진짜 저 어디서든 댓글쓰거나 컴플레인 안 가는데 참다참다가 보냅니다 이러다 다음엔 크게 다칠 것 같습니다 제발좀요

문자 답신내용 : 열차 이용에 불편을 드려 죄송합니다. 혹시 해당 열차 지금 탑승 중이십니까? 출입문 주변에 기록된 편성, 호차 확인 부탁드립니다.

▶ 02/13 16:50 문자 수신내용 : 10편성 7호찹니다

처리결과1)) 02/13 16:50 1운행관제 아웃콜 시 최찬희 관제사 받음. 상기 내용 전달.

문자 답신내용 : 열차 이용에 불편을 드려 대단히 죄송합니다. 주의 운전할 수 있도록 해당 부서로 16시 50분에 전달하였습니다. 아울러 출입문에 끼이셨다면 부산대역 051-678-6128 로 전화하셔서 사고 접수 부탁드립니다. 보상의 경우 공사의 귀책사유가 있는 경우에 한해 가능한 점 양해 부탁드립니다. 안전한 열차 운행을 위해 더욱 노력하겠습니다. 건강한 하루 보내세요.

처리결과2)) 02/13 17:14 부산대역 아웃콜 시 여성수 과장 받음. 상기 내용 및 고객 역으로 연락 갈 수 있음 전달 후 고객 전화번호 참고 전달.
[2026-02-16 07:14:37] [INFO] [ReportService] remarks_text : 노포정기입고예정 (2/13, #2242)19:09경
[2026-02-16 07:14:37] [INFO] [ReportService] train_details : {'num': '1219', 'type': '임시', 'direction': '다대포행(상선)'}
[2026-02-16 07:14:37] [INFO] [ReportService] diagram_type : weekday
[2026-02-16 07:14:37] [INFO] [ReportService] train_candidates : [{'line': 1, 'diagram_type': 'weekday', 'duty_id': 12, 'train_number': 2192, 'direction': 'down', 'run_type': 'regular', 'depot': '16:36:30', 'depot_detail': None, 'track_no': 110, 'station': '부산대학앞', 'seq': 7, 'time': '16:23:35', 'diff_min': 25.0}, {'line': 1, 'diagram_type': 'weekday', 'duty_id': 33, 'train_number': 1215, 'direction': 'up', 'run_type': 'regular', 'depot': '16:15:00', 'depot_detail': None, 'track_no': 278, 'station': '부산대학앞', 'seq': 7, 'time': '16:26:55', 'diff_min': 22.0}, {'line': 1, 'diagram_type': 'weekday', 'duty_id': 41, 'train_number': 2194, 'direction': 'down', 'run_type': 'regular', 'depot': '16:43:00', 'depot_detail': None, 'track_no': 325, 'station': '부산대학앞', 'seq': 7, 'time': '16:30:05', 'diff_min': 18.0}, {'line': 1, 'diagram_type': 'weekday', 'duty_id': 8, 'train_number': 1217, 'direction': 'up', 'run_type': 'regular', 'depot': '16:20:00', 'depot_detail': None, 'track_no': 82, 'station': '부산대학앞', 'seq': 7, 'time': '16:31:55', 'diff_min': 17.0}, {'line': 1, 'diagram_type': 'weekday', 'duty_id': 43, 'train_number': 2196, 'direction': 'down', 'run_type': 'regular', 'depot': '16:49:30', 'depot_detail': None, 'track_no': 340, 'station': '부산대학앞', 'seq': 7, 'time': '16:36:35', 'diff_min': 12.0}, {'line': 1, 'diagram_type': 'weekday', 'duty_id': 35, 'train_number': 1219, 'direction': 'up', 'run_type': 'regular', 'depot': '16:25:00', 'depot_detail': None, 'track_no': 291, 'station': '부산대학앞', 'seq': 7, 'time': '16:36:55', 'diff_min': 12.0}, {'line': 1, 'diagram_type': 'weekday', 'duty_id': 37, 'train_number': 1221, 'direction': 'up', 'run_type': 'regular', 'depot': '16:30:00', 'depot_detail': None, 'track_no': 304, 'station': '부산대학앞', 'seq': 7, 'time': '16:41:55', 'diff_min': 7.0}, {'line': 1, 'diagram_type': 'weekday', 'duty_id': 7, 'train_number': 2198, 'direction': 'down', 'run_type': 'regular', 'depot': '16:56:00', 'depot_detail': None, 'track_no': 67, 'station': '부산대학앞', 'seq': 7, 'time': '16:43:05', 'diff_min': 5.0}, {'line': 1, 'diagram_type': 'weekday', 'duty_id': 49, 'train_number': 1223, 'direction': 'up', 'run_type': 'depot_out', 'depot': '16:35:00', 'depot_detail': '노포출고', 'track_no': 369, 'station': '부산대학앞', 'seq': 7, 'time': '16:46:55', 'diff_min': 2.0}]
[2026-02-16 07:14:37] [INFO] [ReportService] doc_date : 2026.02.13
[2026-02-16 07:14:37] [INFO] [ReportService] line_str : 1호선
[2026-02-16 07:14:37] [INFO] [ReportService] set_str : 10편성
[2026-02-16 07:14:37] [INFO] [ReportService] car_str : 1호차
[2026-02-16 07:14:37] [INFO] [ReportService] train_num : 1219
[2026-02-16 07:14:37] [INFO] [ReportService] action_taken : ▷ 1219열차 10편성 1호차

 - ○ 입고 후 조치예정
[2026-02-16 07:15:37] [INFO] [ReportService] 열차 후보군 발견: 9개
[2026-02-16 07:15:37] [INFO] [ReportService] 후보군 중 본문 일치 열차번호 발견: 2116
[2026-02-16 07:15:40] [INFO] [ReportService] 열차 후보군 발견: 9개
[2026-02-16 07:15:40] [INFO] [ReportService] 후보군 중 본문 일치 열차번호 발견: 2116
[2026-02-16 07:15:40] [INFO] [ReportService] dept_office : 신평차량사업소
[2026-02-16 07:15:40] [INFO] [ReportService] dept_team : 검수1
[2026-02-16 07:15:40] [INFO] [ReportService] reporter_name : 이대석
[2026-02-16 07:15:40] [INFO] [ReportService] reporter_pos : 팀장
[2026-02-16 07:15:40] [INFO] [ReportService] reporter_tel : 200-5115
[2026-02-16 07:15:40] [INFO] [ReportService] raw_content : □ 민원인 : 30대 음성 여성.

02/13 11:28 전화 수신 내용 : 39편성 4호차인데 여기 멈췄다고 하다가 고객 아무 말 없고 주변 소음만 들림. 방송이 없어서 놀래서 전화했었는데 고장 났다고 방송이 나와서 괜찮다 함. 어느 역인지 탐색 시 지금 신평역이라 함.

답변 내용 : 양해 사과. 연락 감사 안내.

처리결과1)) 02/13 11:29 1운행관제 아웃콜. 직원(이름 말 안 함)에게 상기 내용 전달 시 차량 고장으로 정차하고 있다 함. 지연 시간 탐색 시 지금은 확인 어렵다 함.

확인내용1)) 02/13 11:31 2운행관제 김진묵 관제사 7013으로 연락 옴. 이영아 상담사 통화. 지금 1호선 2116, 39편성 열차가 차량 고장으로 지연되고 있다 함. 앞, 뒤 열차들도 함께 지연되고 있다며 참고 안내 부탁한다 함. 연락 감사 안내. 지연 시간 탐색 시 확인 후 다시 연락 주겠다 함.

확인내용2)) 02/13 11:47 1운행관제 아웃콜 시 최찬희 관제사 받음. 지연 시간 탐색 시 약 2분 정도 지연이라 함.

처리결과2)) 02/13 12:23 1운행관제 아웃콜. 직원(이름 말 안 함)에게 타 승객 수신 건 전달 후 역사 및 열차 방송 송출 요청.

참고사항)) 관련문의 총 7 ( 전화 1 , 문자 6 ) 건 / 3 회선 수신
[2026-02-16 07:15:40] [INFO] [ReportService] remarks_text : 신평정기입고예정 (2/13, #4032)23:11경
[2026-02-16 07:15:40] [INFO] [ReportService] train_details : {'num': '2116', 'type': '시운전', 'direction': '노포행(하선)'}
[2026-02-16 07:15:40] [INFO] [ReportService] diagram_type : weekday
[2026-02-16 07:15:40] [INFO] [ReportService] train_candidates : [{'line': 1, 'diagram_type': 'weekday', 'duty_id': 59, 'train_number': 5901, 'direction': 'up', 'run_type': 'depot_out', 'depot': '09:58:00', 'depot_detail': '노포출고', 'track_no': 396, 'station': '신평', 'seq': 34, 'time': '11:03:00', 'diff_min': 25.0}, {'line': 1, 'diagram_type': 'weekday', 'duty_id': 24, 'train_number': 2110, 'direction': 'down', 'run_type': 'regular', 'depot': '12:10:00', 'depot_detail': None, 'track_no': 202, 'station': '신평', 'seq': 34, 'time': '11:04:40', 'diff_min': 24.0}, {'line': 1, 'diagram_type': 'weekday', 'duty_id': 29, 'train_number': 1099, 'direction': 'up', 'run_type': 'regular', 'depot': '10:01:30', 'depot_detail': None, 'track_no': 249, 'station': '신평', 'seq': 34, 'time': '11:06:30', 'diff_min': 22.0}, {'line': 1, 'diagram_type': 'weekday', 'duty_id': 26, 'train_number': 2112, 'direction': 'down', 'run_type': 'regular', 'depot': '12:16:30', 'depot_detail': None, 'track_no': 224, 'station': '신평', 'seq': 34, 'time': '11:11:10', 'diff_min': 17.0}, {'line': 1, 'diagram_type': 'weekday', 'duty_id': 31, 'train_number': 1101, 'direction': 'up', 'run_type': 'regular', 'depot': '10:08:00', 'depot_detail': None, 'track_no': 261, 'station': '신평', 'seq': 34, 'time': '11:13:00', 'diff_min': 15.0}, {'line': 1, 'diagram_type': 'weekday', 'duty_id': 25, 'train_number': 2114, 'direction': 'down', 'run_type': 'regular', 'depot': '12:23:00', 'depot_detail': None, 'track_no': 212, 'station': '신평', 'seq': 34, 'time': '11:17:40', 'diff_min': 11.0}, {'line': 1, 'diagram_type': 'weekday', 'duty_id': 6, 'train_number': 1103, 'direction': 'up', 'run_type': 'regular', 'depot': '10:14:30', 'depot_detail': None, 'track_no': 50, 'station': '신평', 'seq': 34, 'time': '11:19:30', 'diff_min': 9.0}, {'line': 1, 'diagram_type': 'weekday', 'duty_id': 28, 'train_number': 2116, 'direction': 'down', 'run_type': 'regular', 'depot': '12:29:30', 'depot_detail': None, 'track_no': 238, 'station': '신평', 'seq': 34, 'time': '11:24:10', 'diff_min': 4.0}, {'line': 1, 'diagram_type': 'weekday', 'duty_id': 33, 'train_number': 1105, 'direction': 'up', 'run_type': 'regular', 'depot': '10:21:00', 'depot_detail': None, 'track_no': 274, 'station': '신평', 'seq': 34, 'time': '11:26:00', 'diff_min': 2.0}]
[2026-02-16 07:15:40] [INFO] [ReportService] doc_date : 2026.02.13
[2026-02-16 07:15:40] [INFO] [ReportService] line_str : 1호선
[2026-02-16 07:15:40] [INFO] [ReportService] set_str : 39편성
[2026-02-16 07:15:40] [INFO] [ReportService] car_str : 4호차
[2026-02-16 07:15:40] [INFO] [ReportService] train_num : 2116
[2026-02-16 07:15:40] [INFO] [ReportService] action_taken : ▷ 2116열차 39편성 4호차

 - ○ 입고 후 조치예정
[2026-02-16 07:18:45] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-15 07:13:45)
[2026-02-16 07:21:31] [INFO] [Controller] 애플리케이션 종료 중...
[2026-02-16 07:21:35] [INFO] [Main] == Application Startup [TEST MODE] ==
[2026-02-16 07:21:35] [INFO] [Controller] 컨트롤러 초기화 중 (테스트 모드=True)
[2026-02-16 07:21:35] [INFO] [Database] DB 연결 성공: D:\py_train\voc_noti\app\data\voc.db
[2026-02-16 07:21:35] [INFO] [TimetableService] 시각표 로드 완료: 40929 행 (경로: D:\py_train\voc_noti\app\data\line1_sp_timetable.parquet)
[2026-02-16 07:21:35] [INFO] [Controller] 스케줄러 업데이트됨: 크롤링 10분 / 알림 체크 5분
[2026-02-16 07:21:35] [INFO] [Controller] 테스트 모드: 웹 크롤링 생략, 로컬 DB 사용.
[2026-02-16 07:21:35] [INFO] [Controller] 시작 알림 표시됨
[2026-02-16 07:21:46] [INFO] [ReportService] 열차 후보군 발견: 9개
[2026-02-16 07:21:49] [INFO] [ReportService] 열차 후보군 발견: 9개
[2026-02-16 07:21:49] [INFO] [ReportService] dept_office : 신평차량사업소
[2026-02-16 07:21:49] [INFO] [ReportService] dept_team : 검수1
[2026-02-16 07:21:49] [INFO] [ReportService] reporter_name : 이대석
[2026-02-16 07:21:49] [INFO] [ReportService] reporter_pos : 팀장
[2026-02-16 07:21:49] [INFO] [ReportService] reporter_tel : 200-5115
[2026-02-16 07:21:49] [INFO] [ReportService] raw_content : ▶ 02/13 16:48 문자 수신내용 : (제목없음)부산대역에서 정차할 때 왜 자꾸 확인 안해보고 문 닫나요
방금도 3명이나 끼일 뻔 했고 방금도 끼어서 아파 죽겠습니다
저번달에도 그래서 흰패딩에 다 묻고 세탁비 청구하려다가 참았습니다
제가 늦장부리는 것도 아니고 부산대역은 유동인구가 많아서 사람들도 많이 내리고 어르신들도 많이 내리시는데 내리시는 고 기다렸다가 탈려면 문 닫히네요 제발 잘 좀 보라고 해주세요
내리는 분들 다 밀고 타야될까요?
진짜 저 어디서든 댓글쓰거나 컴플레인 안 가는데 참다참다가 보냅니다 이러다 다음엔 크게 다칠 것 같습니다 제발좀요

문자 답신내용 : 열차 이용에 불편을 드려 죄송합니다. 혹시 해당 열차 지금 탑승 중이십니까? 출입문 주변에 기록된 편성, 호차 확인 부탁드립니다.

▶ 02/13 16:50 문자 수신내용 : 10편성 7호찹니다

처리결과1)) 02/13 16:50 1운행관제 아웃콜 시 최찬희 관제사 받음. 상기 내용 전달.

문자 답신내용 : 열차 이용에 불편을 드려 대단히 죄송합니다. 주의 운전할 수 있도록 해당 부서로 16시 50분에 전달하였습니다. 아울러 출입문에 끼이셨다면 부산대역 051-678-6128 로 전화하셔서 사고 접수 부탁드립니다. 보상의 경우 공사의 귀책사유가 있는 경우에 한해 가능한 점 양해 부탁드립니다. 안전한 열차 운행을 위해 더욱 노력하겠습니다. 건강한 하루 보내세요.

처리결과2)) 02/13 17:14 부산대역 아웃콜 시 여성수 과장 받음. 상기 내용 및 고객 역으로 연락 갈 수 있음 전달 후 고객 전화번호 참고 전달.
[2026-02-16 07:21:49] [INFO] [ReportService] remarks_text : 노포

정기

입고

예정



(2/14)

#2270

20:00경
[2026-02-16 07:21:49] [INFO] [ReportService] train_details : {'num': '1215', 'type': '시운전', 'direction': '다대포행(상선)'}
[2026-02-16 07:21:49] [INFO] [ReportService] diagram_type : weekday
[2026-02-16 07:21:49] [INFO] [ReportService] train_candidates : [{'line': 1, 'diagram_type': 'weekday', 'duty_id': 12, 'train_number': 2192, 'direction': 'down', 'run_type': 'regular', 'depot': '16:36:30', 'depot_detail': None, 'track_no': 110, 'station': '부산대학앞', 'seq': 7, 'time': '16:23:35', 'diff_min': 25.0}, {'line': 1, 'diagram_type': 'weekday', 'duty_id': 33, 'train_number': 1215, 'direction': 'up', 'run_type': 'regular', 'depot': '16:15:00', 'depot_detail': None, 'track_no': 278, 'station': '부산대학앞', 'seq': 7, 'time': '16:26:55', 'diff_min': 22.0}, {'line': 1, 'diagram_type': 'weekday', 'duty_id': 41, 'train_number': 2194, 'direction': 'down', 'run_type': 'regular', 'depot': '16:43:00', 'depot_detail': None, 'track_no': 325, 'station': '부산대학앞', 'seq': 7, 'time': '16:30:05', 'diff_min': 18.0}, {'line': 1, 'diagram_type': 'weekday', 'duty_id': 8, 'train_number': 1217, 'direction': 'up', 'run_type': 'regular', 'depot': '16:20:00', 'depot_detail': None, 'track_no': 82, 'station': '부산대학앞', 'seq': 7, 'time': '16:31:55', 'diff_min': 17.0}, {'line': 1, 'diagram_type': 'weekday', 'duty_id': 43, 'train_number': 2196, 'direction': 'down', 'run_type': 'regular', 'depot': '16:49:30', 'depot_detail': None, 'track_no': 340, 'station': '부산대학앞', 'seq': 7, 'time': '16:36:35', 'diff_min': 12.0}, {'line': 1, 'diagram_type': 'weekday', 'duty_id': 35, 'train_number': 1219, 'direction': 'up', 'run_type': 'regular', 'depot': '16:25:00', 'depot_detail': None, 'track_no': 291, 'station': '부산대학앞', 'seq': 7, 'time': '16:36:55', 'diff_min': 12.0}, {'line': 1, 'diagram_type': 'weekday', 'duty_id': 37, 'train_number': 1221, 'direction': 'up', 'run_type': 'regular', 'depot': '16:30:00', 'depot_detail': None, 'track_no': 304, 'station': '부산대학앞', 'seq': 7, 'time': '16:41:55', 'diff_min': 7.0}, {'line': 1, 'diagram_type': 'weekday', 'duty_id': 7, 'train_number': 2198, 'direction': 'down', 'run_type': 'regular', 'depot': '16:56:00', 'depot_detail': None, 'track_no': 67, 'station': '부산대학앞', 'seq': 7, 'time': '16:43:05', 'diff_min': 5.0}, {'line': 1, 'diagram_type': 'weekday', 'duty_id': 49, 'train_number': 1223, 'direction': 'up', 'run_type': 'depot_out', 'depot': '16:35:00', 'depot_detail': '노포출고', 'track_no': 369, 'station': '부산대학앞', 'seq': 7, 'time': '16:46:55', 'diff_min': 2.0}]
[2026-02-16 07:21:49] [INFO] [ReportService] doc_date : 2026.02.13
[2026-02-16 07:21:49] [INFO] [ReportService] line_str : 1호선
[2026-02-16 07:21:49] [INFO] [ReportService] set_str : 10편성
[2026-02-16 07:21:49] [INFO] [ReportService] car_str : 1호차
[2026-02-16 07:21:49] [INFO] [ReportService] train_num : 1215
[2026-02-16 07:21:49] [INFO] [ReportService] action_taken : ▷ 1215열차 10편성 1호차

 - ○ 입고 후 조치예정
[2026-02-16 07:26:35] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-15 07:21:35)
[2026-02-16 07:29:03] [INFO] [ReportService] dept_office : 신평차량사업소
[2026-02-16 07:29:03] [INFO] [ReportService] dept_team : 검수1
[2026-02-16 07:29:03] [INFO] [ReportService] reporter_name : 이대석
[2026-02-16 07:29:03] [INFO] [ReportService] reporter_pos : 팀장
[2026-02-16 07:29:03] [INFO] [ReportService] reporter_tel : 200-5115
[2026-02-16 07:29:03] [INFO] [ReportService] raw_content : □ 민원인 : 60대 음성 남성(보안관)

02/13 16:19 전화 수신내용 : 보안관이라 함. 부산진역에 타는 냄새가 많이 난다 함.

답변내용 : 긴급전화 연결 안내.

처리결과1)) 02/13 16:19 1호선 긴급전화 핫라인 연결.

처리결과2)) 02/13 16:19 운행관제 팀장(7035)에게 아웃콜 시 김민수 부팀장 받음. 상기 내용 및 수신 전화번호 전달.

처리결과3)) 02/13 16:27 1운행관제 아웃콜 시 최찬희 관제사 받음. 다수 수신 전달 시 (원인) 확인 중에 있다 함. 32편성과 1205 열차라고 수신되고 있음 전달 시 1205 열차가 32편성이고, 부산진역 통과하면서 출입문 열고 닫을 때 (타는 냄새가) 유입된 것 같다 함.

확인내용1)) 02/13 16:33 1운행관제 아웃콜 시 최찬희 관제사 받음. 원인 확인 요청하는 고객이 있어 원인 확인됐는지 탐색 시 직원들이 나가서 확인 중에 있다 함. 원인 확인되면 연락 부탁함.

확인내용2)) 02/13 16:53 1운행관제 아웃콜 시 최찬희 관제사 받음. 부산진역 타는 냄새 원인 확인 여부 탐색 시 최병곤 부장 바꿔 줌. 공기 흡입하는 공조기실에서 연기로 추정되는 게 발생하였고, 정확한 원인은 파악하는데 시간이 소요될 것 같다 함.

참고사항)) 관련문의 총 9 ( 전화 2 , 문자 7 ) 건 / 6 회선 수신.
[2026-02-16 07:29:03] [INFO] [ReportService] remarks_text : 서면

정기

입고

예정



(2/13)

#2338

23:59경
[2026-02-16 07:29:03] [INFO] [ReportService] train_details : {'num': '1205', 'type': '시운전', 'direction': '다대포행(상선)'}
[2026-02-16 07:29:03] [INFO] [ReportService] diagram_type : weekday
[2026-02-16 07:29:03] [INFO] [ReportService] train_candidates : []
[2026-02-16 07:29:03] [INFO] [ReportService] doc_date : 2026.02.13
[2026-02-16 07:29:03] [INFO] [ReportService] line_str : 1호선
[2026-02-16 07:29:03] [INFO] [ReportService] set_str : 32편성
[2026-02-16 07:29:03] [INFO] [ReportService] car_str : 1호차
[2026-02-16 07:29:03] [INFO] [ReportService] train_num : 1205
[2026-02-16 07:29:03] [INFO] [ReportService] action_taken : ▷ 1205열차 32편성 1호차

 - ○ 입고 후 조치예정
[2026-02-16 07:31:36] [INFO] [Controller] 테스트 모드: 웹 크롤링 생략, 로컬 DB 사용.
[2026-02-16 07:31:36] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-16 07:26:35)
[2026-02-16 07:31:48] [INFO] [Controller] 애플리케이션 종료 중...
[2026-02-16 07:31:51] [INFO] [Main] == Application Startup [TEST MODE] ==
[2026-02-16 07:31:51] [INFO] [Controller] 컨트롤러 초기화 중 (테스트 모드=True)
[2026-02-16 07:31:51] [INFO] [Database] DB 연결 성공: D:\py_train\voc_noti\app\data\voc.db
[2026-02-16 07:31:51] [INFO] [TimetableService] 시각표 로드 완료: 40929 행 (경로: D:\py_train\voc_noti\app\data\line1_sp_timetable.parquet)
[2026-02-16 07:31:51] [INFO] [Controller] 스케줄러 업데이트됨: 크롤링 10분 / 알림 체크 5분
[2026-02-16 07:31:51] [INFO] [Controller] 테스트 모드: 웹 크롤링 생략, 로컬 DB 사용.
[2026-02-16 07:31:51] [INFO] [Controller] 시작 알림 표시됨
[2026-02-16 07:32:02] [INFO] [ReportService] 열차 후보군 발견: 9개
[2026-02-16 07:32:03] [INFO] [ReportService] 열차 후보군 발견: 9개
[2026-02-16 07:32:03] [INFO] [ReportService] dept_office : 신평차량사업소
[2026-02-16 07:32:03] [INFO] [ReportService] dept_team : 검수1
[2026-02-16 07:32:03] [INFO] [ReportService] reporter_name : 이대석
[2026-02-16 07:32:03] [INFO] [ReportService] reporter_pos : 팀장
[2026-02-16 07:32:03] [INFO] [ReportService] reporter_tel : 200-5115
[2026-02-16 07:32:03] [INFO] [ReportService] raw_content : ▶

02/13 16:48 문자 수신내용 :

(제목없음)부산대역에서 정차할 때 왜 자꾸 확인

안해보고 문 닫나요 방금도 3명이나 끼일 뻔 했고

방금도 끼어서 아파 죽겠습니다 저번달에도 그래서

흰패딩에 다 묻고 세탁비 청구하려다가 참았습니다 제가

늦장부리는 것도 아니고 부산대역은 유동인구가 많아서

사람들도 많이 내리고 어르신들도 많이 내리시는데

내리시는 고 기다렸다가 탈려면 문 닫히네요 제발 잘 좀

보라고 해주세요 내리는 분들 다 밀고 타야될까요? 진짜

저 어디서든 댓글쓰거나 컴플레인 안 가는데 참다참다가

보냅니다 이러다 다음엔 크게 다칠 것 같습니다 제발좀요

문자 답신내용 : 열차 이용에 불편을 드려 죄송합니다.

혹시 해당 열차 지금 탑승 중이십니까? 출입문 주변에

기록된 편성, 호차 확인 부탁드립니다.

▶

02/13 16:50 문자 수신내용 : 10편성

7호찹니다

처리결과1)) 02/13 16:50 1운행관제 아웃콜

시 최찬희 관제사 받음. 상기 내용 전달.

문자 답신내용 : 열차 이용에 불편을 드려 대단히

죄송합니다. 주의 운전할 수 있도록 해당 부서로 16시

50분에 전달하였습니다. 아울러 출입문에 끼이셨다면

부산대역 051-678-6128 로 전화하셔서 사고

접수 부탁드립니다. 보상의 경우 공사의 귀책사유가 있는

경우에 한해 가능한 점 양해 부탁드립니다. 안전한 열차

운행을 위해 더욱 노력하겠습니다. 건강한 하루

보내세요.

처리결과2)) 02/13 17:14 부산대역 아웃콜 시

여성수 과장 받음. 상기 내용 및 고객 역으로 연락 갈

수 있음 전달 후 고객 전화번호 참고 전달.
[2026-02-16 07:32:03] [INFO] [ReportService] remarks_text : 노포

정기

입고

예정

(2/14)

#2270

20:00경
[2026-02-16 07:32:03] [INFO] [ReportService] train_details : {'num': '1215', 'type': '시운전', 'direction': '다대포행(상선)'}
[2026-02-16 07:32:03] [INFO] [ReportService] diagram_type : weekday
[2026-02-16 07:32:03] [INFO] [ReportService] train_candidates : [{'line': 1, 'diagram_type': 'weekday', 'duty_id': 12, 'train_number': 2192, 'direction': 'down', 'run_type': 'regular', 'depot': '16:36:30', 'depot_detail': None, 'track_no': 110, 'station': '부산대학앞', 'seq': 7, 'time': '16:23:35', 'diff_min': 25.0}, {'line': 1, 'diagram_type': 'weekday', 'duty_id': 33, 'train_number': 1215, 'direction': 'up', 'run_type': 'regular', 'depot': '16:15:00', 'depot_detail': None, 'track_no': 278, 'station': '부산대학앞', 'seq': 7, 'time': '16:26:55', 'diff_min': 22.0}, {'line': 1, 'diagram_type': 'weekday', 'duty_id': 41, 'train_number': 2194, 'direction': 'down', 'run_type': 'regular', 'depot': '16:43:00', 'depot_detail': None, 'track_no': 325, 'station': '부산대학앞', 'seq': 7, 'time': '16:30:05', 'diff_min': 18.0}, {'line': 1, 'diagram_type': 'weekday', 'duty_id': 8, 'train_number': 1217, 'direction': 'up', 'run_type': 'regular', 'depot': '16:20:00', 'depot_detail': None, 'track_no': 82, 'station': '부산대학앞', 'seq': 7, 'time': '16:31:55', 'diff_min': 17.0}, {'line': 1, 'diagram_type': 'weekday', 'duty_id': 43, 'train_number': 2196, 'direction': 'down', 'run_type': 'regular', 'depot': '16:49:30', 'depot_detail': None, 'track_no': 340, 'station': '부산대학앞', 'seq': 7, 'time': '16:36:35', 'diff_min': 12.0}, {'line': 1, 'diagram_type': 'weekday', 'duty_id': 35, 'train_number': 1219, 'direction': 'up', 'run_type': 'regular', 'depot': '16:25:00', 'depot_detail': None, 'track_no': 291, 'station': '부산대학앞', 'seq': 7, 'time': '16:36:55', 'diff_min': 12.0}, {'line': 1, 'diagram_type': 'weekday', 'duty_id': 37, 'train_number': 1221, 'direction': 'up', 'run_type': 'regular', 'depot': '16:30:00', 'depot_detail': None, 'track_no': 304, 'station': '부산대학앞', 'seq': 7, 'time': '16:41:55', 'diff_min': 7.0}, {'line': 1, 'diagram_type': 'weekday', 'duty_id': 7, 'train_number': 2198, 'direction': 'down', 'run_type': 'regular', 'depot': '16:56:00', 'depot_detail': None, 'track_no': 67, 'station': '부산대학앞', 'seq': 7, 'time': '16:43:05', 'diff_min': 5.0}, {'line': 1, 'diagram_type': 'weekday', 'duty_id': 49, 'train_number': 1223, 'direction': 'up', 'run_type': 'depot_out', 'depot': '16:35:00', 'depot_detail': '노포출고', 'track_no': 369, 'station': '부산대학앞', 'seq': 7, 'time': '16:46:55', 'diff_min': 2.0}]
[2026-02-16 07:32:03] [INFO] [ReportService] doc_date : 2026.02.13
[2026-02-16 07:32:03] [INFO] [ReportService] line_str : 1호선
[2026-02-16 07:32:03] [INFO] [ReportService] set_str : 10편성
[2026-02-16 07:32:03] [INFO] [ReportService] car_str : 1호차
[2026-02-16 07:32:03] [INFO] [ReportService] train_num : 1215
[2026-02-16 07:32:03] [INFO] [ReportService] action_taken : ▷ 1215열차 10편성 1호차

 - ○ 입고 후 조치예정
[2026-02-16 07:32:33] [INFO] [Controller] 애플리케이션 종료 중...
[2026-02-16 07:35:15] [INFO] [Main] == Application Startup [TEST MODE] ==
[2026-02-16 07:35:15] [INFO] [Controller] 컨트롤러 초기화 중 (테스트 모드=True)
[2026-02-16 07:35:15] [INFO] [Database] DB 연결 성공: D:\py_train\voc_noti\app\data\voc.db
[2026-02-16 07:35:15] [INFO] [TimetableService] 시각표 로드 완료: 40929 행 (경로: D:\py_train\voc_noti\app\data\line1_sp_timetable.parquet)
[2026-02-16 07:35:15] [INFO] [Controller] 스케줄러 업데이트됨: 크롤링 10분 / 알림 체크 5분
[2026-02-16 07:35:15] [INFO] [Controller] 테스트 모드: 웹 크롤링 생략, 로컬 DB 사용.
[2026-02-16 07:35:15] [INFO] [Controller] 시작 알림 표시됨
[2026-02-16 07:40:15] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-15 07:35:15)
[2026-02-16 07:45:15] [INFO] [Controller] 테스트 모드: 웹 크롤링 생략, 로컬 DB 사용.
[2026-02-16 07:45:15] [INFO] [Controller] 신규 DB 데이터 확인 중... (마지막 확인: 2026-02-16 07:40:15)
[2026-02-16 07:48:53] [INFO] [Controller] 애플리케이션 종료 중...
[2026-02-16 07:48:56] [INFO] [Main] == Application Startup [TEST MODE] ==
[2026-02-16 07:48:56] [INFO] [Controller] 컨트롤러 초기화 중 (테스트 모드=True)
[2026-02-16 07:48:56] [INFO] [Database] DB 연결 성공: D:\py_train\voc_noti\app\data\voc.db
[2026-02-16 07:48:56] [INFO] [TimetableService] 시각표 로드 완료: 40929 행 (경로: D:\py_train\voc_noti\app\data\line1_sp_timetable.parquet)
[2026-02-16 07:48:56] [INFO] [Controller] 스케줄러 업데이트됨: 크롤링 10분 / 알림 체크 5분
[2026-02-16 07:48:56] [INFO] [Controller] 테스트 모드: 웹 크롤링 생략, 로컬 DB 사용.
[2026-02-16 07:48:56] [INFO] [Controller] 시작 알림 표시됨
[2026-02-16 07:50:20] [INFO] [Controller] 애플리케이션 종료 중...
[2026-02-16 07:54:53] [INFO] [Main] == Application Startup [TEST MODE] ==
[2026-02-16 07:54:53] [INFO] [Controller] 컨트롤러 초기화 중 (테스트 모드=True)
[2026-02-16 07:54:53] [INFO] [Database] DB 연결 성공: D:\py_train\voc_noti\app\data\voc.db
[2026-02-16 07:54:53] [INFO] [TimetableService] 시각표 로드 완료: 40929 행 (경로: D:\py_train\voc_noti\app\data\line1_sp_timetable.parquet)
[2026-02-16 07:54:53] [INFO] [Controller] 스케줄러 업데이트됨: 크롤링 10분 / 알림 체크 5분
[2026-02-16 07:54:53] [INFO] [Controller] 테스트 모드: 웹 크롤링 생략, 로컬 DB 사용.
[2026-02-16 07:54:53] [INFO] [Controller] 시작 알림 표시됨
[2026-02-16 07:59:53] [INFO] [Controller] 신규 DB 데이터 확인 중...
[2026-02-16 08:02:14] [INFO] [Controller] 애플리케이션 종료 중...
[2026-02-16 08:02:16] [INFO] [Main] == Application Startup [TEST MODE] ==
[2026-02-16 08:02:16] [INFO] [Controller] 컨트롤러 초기화 중 (테스트 모드=True)
[2026-02-16 08:02:16] [INFO] [Database] DB 연결 성공: D:\py_train\voc_noti\app\data\voc.db
[2026-02-16 08:02:17] [INFO] [TimetableService] 시각표 로드 완료: 40929 행 (경로: D:\py_train\voc_noti\app\data\line1_sp_timetable.parquet)
[2026-02-16 08:02:17] [INFO] [Controller] 스케줄러 업데이트됨: 크롤링 10분 / 알림 체크 5분
[2026-02-16 08:02:17] [INFO] [Controller] 테스트 모드: 웹 크롤링 생략, 로컬 DB 사용.
[2026-02-16 08:02:17] [INFO] [Controller] 시작 알림 표시됨
[2026-02-16 08:02:25] [INFO] [ReportService] 열차 후보군 발견: 9개
[2026-02-16 08:06:56] [INFO] [Controller] 애플리케이션 종료 중...
[2026-02-16 08:06:58] [INFO] [Main] == Application Startup [TEST MODE] ==
[2026-02-16 08:06:58] [INFO] [Controller] 컨트롤러 초기화 중 (테스트 모드=True)
[2026-02-16 08:06:58] [INFO] [Database] DB 연결 성공: D:\py_train\voc_noti\app\data\voc.db
[2026-02-16 08:06:58] [INFO] [TimetableService] 시각표 로드 완료: 40929 행 (경로: D:\py_train\voc_noti\app\data\line1_sp_timetable.parquet)
[2026-02-16 08:06:58] [INFO] [Controller] 스케줄러 업데이트됨: 크롤링 10분 / 알림 체크 5분
[2026-02-16 08:06:58] [INFO] [Controller] 테스트 모드: 웹 크롤링 생략, 로컬 DB 사용.
[2026-02-16 08:06:59] [INFO] [Controller] 시작 알림 표시됨
[2026-02-16 08:07:07] [INFO] [ReportService] 열차 후보군 발견: 9개
[2026-02-16 08:07:16] [INFO] [ReportService] 열차 후보군 발견: 9개
[2026-02-16 08:07:16] [INFO] [ReportService] dept_office : 신평차량사업소
[2026-02-16 08:07:16] [INFO] [ReportService] dept_team : 검수1
[2026-02-16 08:07:16] [INFO] [ReportService] reporter_name : 이대석
[2026-02-16 08:07:16] [INFO] [ReportService] reporter_pos : 팀장
[2026-02-16 08:07:16] [INFO] [ReportService] reporter_tel : 200-5115
[2026-02-16 08:07:16] [INFO] [ReportService] raw_content : □ 제목 : 1호선 10편성 부산대역에서 출입문 끼임

▶ 02/13 16:48 문자 수신내용 : (제목없음)부산대역에서 정차할 때 왜 자꾸 확인 안해보고 문 닫나요 방금도 3명이나 끼일 뻔 했고 방금도 끼어서 아파 죽겠습니다 저번달에도 그래서 흰패딩에 다 묻고 세탁비 청구하려다가 참았습니다 제가 늦장부리는 것도 아니고 부산대역은 유동인구가 많아서 사람들도 많이 내리고 어르신들도 많이 내리시는데 내리시는 고 기다렸다가 탈려면 문 닫히네요 제발 잘 좀 보라고 해주세요 내리는 분들 다 밀고 타야될까요? 진짜 저 어디서든 댓글쓰거나 컴플레인 안 가는데 참다참다가 보냅니다 이러다 다음엔 크게 다칠 것 같습니다 제발좀요

문자 답신내용 : 열차 이용에 불편을 드려 죄송합니다. 혹시 해당 열차 지금 탑승 중이십니까? 출입문 주변에 기록된 편성, 호차 확인 부탁드립니다.

▶ 02/13 16:50 문자 수신내용 : 10편성 7호찹니다

처리결과1))

02/13 16:50 1운행관제 아웃콜 시 최찬희 관제사 받음. 상기 내용 전달.

문자 답신내용 : 열차 이용에 불편을 드려 대단히 죄송합니다. 주의 운전할 수 있도록 해당 부서로 16시 50분에 전달하였습니다. 아울러 출입문에 끼이셨다면 부산대역 051-678-6128 로 전화하셔서 사고 접수 부탁드립니다. 보상의 경우 공사의 귀책사유가 있는 경우에 한해 가능한 점 양해 부탁드립니다. 안전한 열차 운행을 위해 더욱 노력하겠습니다. 건강한 하루 보내세요.

처리결과2))

02/13 17:14 부산대역 아웃콜 시 여성수 과장 받음. 상기 내용 및 고객 역으로 연락 갈 수 있음 전달 후 고객 전화번호 참고 전달.
[2026-02-16 08:07:16] [INFO] [ReportService] remarks_text : 노포

정기

입고

예정

(2/14)

#2270

20:00경
[2026-02-16 08:07:16] [INFO] [ReportService] train_details : {'num': '1215', 'type': '시운전', 'direction': '다대포행(상선)'}
[2026-02-16 08:07:16] [INFO] [ReportService] diagram_type : weekday
[2026-02-16 08:07:16] [INFO] [ReportService] train_candidates : [{'line': 1, 'diagram_type': 'weekday', 'duty_id': 12, 'train_number': 2192, 'direction': 'down', 'run_type': 'regular', 'depot': '16:36:30', 'depot_detail': None, 'track_no': 110, 'station': '부산대학앞', 'seq': 7, 'time': '16:23:35', 'diff_min': 25.0}, {'line': 1, 'diagram_type': 'weekday', 'duty_id': 33, 'train_number': 1215, 'direction': 'up', 'run_type': 'regular', 'depot': '16:15:00', 'depot_detail': None, 'track_no': 278, 'station': '부산대학앞', 'seq': 7, 'time': '16:26:55', 'diff_min': 22.0}, {'line': 1, 'diagram_type': 'weekday', 'duty_id': 41, 'train_number': 2194, 'direction': 'down', 'run_type': 'regular', 'depot': '16:43:00', 'depot_detail': None, 'track_no': 325, 'station': '부산대학앞', 'seq': 7, 'time': '16:30:05', 'diff_min': 18.0}, {'line': 1, 'diagram_type': 'weekday', 'duty_id': 8, 'train_number': 1217, 'direction': 'up', 'run_type': 'regular', 'depot': '16:20:00', 'depot_detail': None, 'track_no': 82, 'station': '부산대학앞', 'seq': 7, 'time': '16:31:55', 'diff_min': 17.0}, {'line': 1, 'diagram_type': 'weekday', 'duty_id': 43, 'train_number': 2196, 'direction': 'down', 'run_type': 'regular', 'depot': '16:49:30', 'depot_detail': None, 'track_no': 340, 'station': '부산대학앞', 'seq': 7, 'time': '16:36:35', 'diff_min': 12.0}, {'line': 1, 'diagram_type': 'weekday', 'duty_id': 35, 'train_number': 1219, 'direction': 'up', 'run_type': 'regular', 'depot': '16:25:00', 'depot_detail': None, 'track_no': 291, 'station': '부산대학앞', 'seq': 7, 'time': '16:36:55', 'diff_min': 12.0}, {'line': 1, 'diagram_type': 'weekday', 'duty_id': 37, 'train_number': 1221, 'direction': 'up', 'run_type': 'regular', 'depot': '16:30:00', 'depot_detail': None, 'track_no': 304, 'station': '부산대학앞', 'seq': 7, 'time': '16:41:55', 'diff_min': 7.0}, {'line': 1, 'diagram_type': 'weekday', 'duty_id': 7, 'train_number': 2198, 'direction': 'down', 'run_type': 'regular', 'depot': '16:56:00', 'depot_detail': None, 'track_no': 67, 'station': '부산대학앞', 'seq': 7, 'time': '16:43:05', 'diff_min': 5.0}, {'line': 1, 'diagram_type': 'weekday', 'duty_id': 49, 'train_number': 1223, 'direction': 'up', 'run_type': 'depot_out', 'depot': '16:35:00', 'depot_detail': '노포출고', 'track_no': 369, 'station': '부산대학앞', 'seq': 7, 'time': '16:46:55', 'diff_min': 2.0}]
[2026-02-16 08:07:16] [INFO] [ReportService] doc_date : 2026.02.13
[2026-02-16 08:07:16] [INFO] [ReportService] line_str : 1호선
[2026-02-16 08:07:16] [INFO] [ReportService] set_str : 10편성
[2026-02-16 08:07:16] [INFO] [ReportService] car_str : 1호차
[2026-02-16 08:07:16] [INFO] [ReportService] train_num : 1215
[2026-02-16 08:07:16] [INFO] [ReportService] action_taken : ▷ 1215열차 10편성 1호차

 - ○ 입고 후 조치예정
[2026-02-16 08:07:44] [INFO] [Controller] 애플리케이션 종료 중...
[2026-02-16 08:09:39] [INFO] [Main] == Application Startup [TEST MODE] ==
[2026-02-16 08:09:39] [INFO] [Controller] 컨트롤러 초기화 중 (테스트 모드=True)
[2026-02-16 08:09:39] [INFO] [Database] DB 연결 성공: D:\py_train\voc_noti\app\data\voc.db
[2026-02-16 08:09:39] [INFO] [TimetableService] 시각표 로드 완료: 40929 행 (경로: D:\py_train\voc_noti\app\data\line1_sp_timetable.parquet)
[2026-02-16 08:09:39] [INFO] [Controller] 스케줄러 업데이트됨: 크롤링 10분 / 알림 체크 5분
[2026-02-16 08:09:39] [INFO] [Controller] 테스트 모드: 웹 크롤링 생략, 로컬 DB 사용.
[2026-02-16 08:09:39] [INFO] [Controller] 시작 알림 표시됨
[2026-02-16 08:09:47] [INFO] [ReportService] 열차 후보군 발견: 9개
[2026-02-16 08:09:50] [INFO] [ReportService] 열차 후보군 발견: 9개
[2026-02-16 08:09:50] [INFO] [ReportService] dept_office : 신평차량사업소
[2026-02-16 08:09:50] [INFO] [ReportService] dept_team : 검수1
[2026-02-16 08:09:50] [INFO] [ReportService] reporter_name : 이대석
[2026-02-16 08:09:50] [INFO] [ReportService] reporter_pos : 팀장
[2026-02-16 08:09:50] [INFO] [ReportService] reporter_tel : 200-5115
[2026-02-16 08:09:50] [INFO] [ReportService] raw_content : □ 제목 : 1호선 10편성 부산대역에서 출입문 끼임

▶ 02/13 16:48 문자 수신내용 : (제목없음)부산대역에서 정차할 때 왜 자꾸 확인 안해보고 문 닫나요 방금도 3명이나 끼일 뻔 했고 방금도 끼어서 아파 죽겠습니다 저번달에도 그래서 흰패딩에 다 묻고 세탁비 청구하려다가 참았습니다 제가 늦장부리는 것도 아니고 부산대역은 유동인구가 많아서 사람들도 많이 내리고 어르신들도 많이 내리시는데 내리시는 고 기다렸다가 탈려면 문 닫히네요 제발 잘 좀 보라고 해주세요 내리는 분들 다 밀고 타야될까요? 진짜 저 어디서든 댓글쓰거나 컴플레인 안 가는데 참다참다가 보냅니다 이러다 다음엔 크게 다칠 것 같습니다 제발좀요

문자 답신내용 : 열차 이용에 불편을 드려 죄송합니다. 혹시 해당 열차 지금 탑승 중이십니까? 출입문 주변에 기록된 편성, 호차 확인 부탁드립니다.

▶ 02/13 16:50 문자 수신내용 : 10편성 7호찹니다

처리결과1))

02/13 16:50 1운행관제 아웃콜 시 최찬희 관제사 받음. 상기 내용 전달.

문자 답신내용 : 열차 이용에 불편을 드려 대단히 죄송합니다. 주의 운전할 수 있도록 해당 부서로 16시 50분에 전달하였습니다. 아울러 출입문에 끼이셨다면 부산대역 051-678-6128 로 전화하셔서 사고 접수 부탁드립니다. 보상의 경우 공사의 귀책사유가 있는 경우에 한해 가능한 점 양해 부탁드립니다. 안전한 열차 운행을 위해 더욱 노력하겠습니다. 건강한 하루 보내세요.

처리결과2))

02/13 17:14 부산대역 아웃콜 시 여성수 과장 받음. 상기 내용 및 고객 역으로 연락 갈 수 있음 전달 후 고객 전화번호 참고 전달.
[2026-02-16 08:09:50] [INFO] [ReportService] remarks_text : 노포

정기

입고

예정

(2/14)

#2270

20:00경
[2026-02-16 08:09:50] [INFO] [ReportService] train_details : {'num': '1215', 'type': '시운전', 'direction': '다대포행(상선)'}
[2026-02-16 08:09:50] [INFO] [ReportService] diagram_type : weekday
[2026-02-16 08:09:50] [INFO] [ReportService] train_candidates : [{'line': 1, 'diagram_type': 'weekday', 'duty_id': 12, 'train_number': 2192, 'direction': 'down', 'run_type': 'regular', 'depot': '16:36:30', 'depot_detail': None, 'track_no': 110, 'station': '부산대학앞', 'seq': 7, 'time': '16:23:35', 'diff_min': 25.0}, {'line': 1, 'diagram_type': 'weekday', 'duty_id': 33, 'train_number': 1215, 'direction': 'up', 'run_type': 'regular', 'depot': '16:15:00', 'depot_detail': None, 'track_no': 278, 'station': '부산대학앞', 'seq': 7, 'time': '16:26:55', 'diff_min': 22.0}, {'line': 1, 'diagram_type': 'weekday', 'duty_id': 41, 'train_number': 2194, 'direction': 'down', 'run_type': 'regular', 'depot': '16:43:00', 'depot_detail': None, 'track_no': 325, 'station': '부산대학앞', 'seq': 7, 'time': '16:30:05', 'diff_min': 18.0}, {'line': 1, 'diagram_type': 'weekday', 'duty_id': 8, 'train_number': 1217, 'direction': 'up', 'run_type': 'regular', 'depot': '16:20:00', 'depot_detail': None, 'track_no': 82, 'station': '부산대학앞', 'seq': 7, 'time': '16:31:55', 'diff_min': 17.0}, {'line': 1, 'diagram_type': 'weekday', 'duty_id': 43, 'train_number': 2196, 'direction': 'down', 'run_type': 'regular', 'depot': '16:49:30', 'depot_detail': None, 'track_no': 340, 'station': '부산대학앞', 'seq': 7, 'time': '16:36:35', 'diff_min': 12.0}, {'line': 1, 'diagram_type': 'weekday', 'duty_id': 35, 'train_number': 1219, 'direction': 'up', 'run_type': 'regular', 'depot': '16:25:00', 'depot_detail': None, 'track_no': 291, 'station': '부산대학앞', 'seq': 7, 'time': '16:36:55', 'diff_min': 12.0}, {'line': 1, 'diagram_type': 'weekday', 'duty_id': 37, 'train_number': 1221, 'direction': 'up', 'run_type': 'regular', 'depot': '16:30:00', 'depot_detail': None, 'track_no': 304, 'station': '부산대학앞', 'seq': 7, 'time': '16:41:55', 'diff_min': 7.0}, {'line': 1, 'diagram_type': 'weekday', 'duty_id': 7, 'train_number': 2198, 'direction': 'down', 'run_type': 'regular', 'depot': '16:56:00', 'depot_detail': None, 'track_no': 67, 'station': '부산대학앞', 'seq': 7, 'time': '16:43:05', 'diff_min': 5.0}, {'line': 1, 'diagram_type': 'weekday', 'duty_id': 49, 'train_number': 1223, 'direction': 'up', 'run_type': 'depot_out', 'depot': '16:35:00', 'depot_detail': '노포출고', 'track_no': 369, 'station': '부산대학앞', 'seq': 7, 'time': '16:46:55', 'diff_min': 2.0}]
[2026-02-16 08:09:50] [INFO] [ReportService] doc_date : 2026.02.13
[2026-02-16 08:09:50] [INFO] [ReportService] line_str : 1호선
[2026-02-16 08:09:50] [INFO] [ReportService] set_str : 10편성
[2026-02-16 08:09:50] [INFO] [ReportService] car_str : 1호차
[2026-02-16 08:09:50] [INFO] [ReportService] train_num : 1215
[2026-02-16 08:09:50] [INFO] [ReportService] action_taken : ▷ 1215열차 10편성 1호차

 - ○ 입고 후 조치예정
[2026-02-16 08:14:39] [INFO] [Controller] 신규 DB 데이터 확인 중...
[2026-02-16 08:15:03] [INFO] [Controller] 애플리케이션 종료 중...
[2026-02-17 22:23:25] [INFO] [Main] == Application Startup [TEST MODE] ==
[2026-02-17 22:23:25] [INFO] [Controller] 컨트롤러 초기화 중 (테스트 모드=True)
[2026-02-17 22:23:25] [INFO] [Database] DB 연결 성공: D:\py_train\voc_noti\app\data\voc.db
[2026-02-17 22:23:26] [INFO] [TimetableService] 시각표 로드 완료: 40929 행 (경로: D:\py_train\voc_noti\app\data\line1_sp_timetable.parquet)
[2026-02-17 22:23:27] [INFO] [Controller] 스케줄러 업데이트됨: 크롤링 10분 / 알림 체크 5분
[2026-02-17 22:23:27] [INFO] [Controller] 테스트 모드: 웹 크롤링 생략, 로컬 DB 사용.
[2026-02-17 22:23:27] [INFO] [Controller] 시작 알림 표시됨
[2026-02-17 22:25:07] [INFO] [Controller] 애플리케이션 종료 중...
[2026-02-17 22:27:52] [INFO] [Main] == Application Startup [TEST MODE] ==
[2026-02-17 22:27:52] [INFO] [Controller] 컨트롤러 초기화 중 (테스트 모드=True)
[2026-02-17 22:27:52] [INFO] [Database] DB 연결 성공: D:\py_train\voc_noti\app\data\voc.db
[2026-02-17 22:27:52] [INFO] [TimetableService] 시각표 로드 완료: 40929 행 (경로: D:\py_train\voc_noti\app\data\line1_sp_timetable.parquet)
[2026-02-17 22:27:53] [INFO] [Controller] 스케줄러 업데이트됨: 크롤링 10분 / 알림 체크 5분
[2026-02-17 22:27:53] [INFO] [Controller] 테스트 모드: 웹 크롤링 생략, 로컬 DB 사용.
[2026-02-17 22:27:53] [INFO] [Controller] 시작 알림 표시됨
[2026-02-17 22:32:53] [INFO] [Controller] 신규 DB 데이터 확인 중...
[2026-02-17 22:34:07] [INFO] [Controller] 애플리케이션 종료 중...
[2026-02-17 22:34:10] [INFO] [Main] == Application Startup [TEST MODE] ==
[2026-02-17 22:34:10] [INFO] [Controller] 컨트롤러 초기화 중 (테스트 모드=True)
[2026-02-17 22:34:10] [INFO] [Database] DB 연결 성공: D:\py_train\voc_noti\app\data\voc.db
[2026-02-17 22:34:10] [INFO] [TimetableService] 시각표 로드 완료: 40929 행 (경로: D:\py_train\voc_noti\app\data\line1_sp_timetable.parquet)
[2026-02-17 22:34:10] [INFO] [Controller] 스케줄러 업데이트됨: 크롤링 10분 / 알림 체크 5분
[2026-02-17 22:34:10] [INFO] [Controller] 테스트 모드: 웹 크롤링 생략, 로컬 DB 사용.
[2026-02-17 22:34:10] [INFO] [Controller] 시작 알림 표시됨
[2026-02-17 22:37:15] [INFO] [Controller] 애플리케이션 종료 중...
[2026-02-17 22:37:44] [INFO] [Main] == Application Startup [TEST MODE] ==
[2026-02-17 22:37:44] [INFO] [Controller] 컨트롤러 초기화 중 (테스트 모드=True)
[2026-02-17 22:37:44] [INFO] [Database] DB 연결 성공: D:\py_train\voc_noti\app\data\voc.db
[2026-02-17 22:37:44] [INFO] [TimetableService] 시각표 로드 완료: 40929 행 (경로: D:\py_train\voc_noti\app\data\line1_sp_timetable.parquet)
[2026-02-17 22:37:44] [INFO] [Controller] 스케줄러 업데이트됨: 크롤링 10분 / 알림 체크 5분
[2026-02-17 22:37:44] [INFO] [Controller] 테스트 모드: 웹 크롤링 생략, 로컬 DB 사용.
[2026-02-17 22:37:44] [INFO] [Controller] 시작 알림 표시됨
[2026-02-17 22:42:44] [INFO] [Controller] 신규 DB 데이터 확인 중...
[2026-02-17 22:43:08] [INFO] [Controller] 애플리케이션 종료 중...
[2026-02-17 22:43:10] [INFO] [Main] == Application Startup [TEST MODE] ==
[2026-02-17 22:43:10] [INFO] [Controller] 컨트롤러 초기화 중 (테스트 모드=True)
[2026-02-17 22:43:10] [INFO] [Database] DB 연결 성공: D:\py_train\voc_noti\app\data\voc.db
[2026-02-17 22:43:10] [INFO] [TimetableService] 시각표 로드 완료: 40929 행 (경로: D:\py_train\voc_noti\app\data\line1_sp_timetable.parquet)
[2026-02-17 22:43:10] [INFO] [Controller] 스케줄러 업데이트됨: 크롤링 10분 / 알림 체크 5분
[2026-02-17 22:43:10] [INFO] [Controller] 테스트 모드: 웹 크롤링 생략, 로컬 DB 사용.
[2026-02-17 22:43:10] [INFO] [Controller] 시작 알림 표시됨
[2026-02-17 22:48:10] [INFO] [Controller] 신규 DB 데이터 확인 중...
[2026-02-17 22:50:31] [INFO] [Controller] 애플리케이션 종료 중...
[2026-02-18 00:24:03] [INFO] [Main] == Application Startup [TEST MODE] ==
[2026-02-18 00:24:03] [INFO] [Controller] 컨트롤러 초기화 중 (테스트 모드=True)
[2026-02-18 00:24:03] [INFO] [Controller] 설정 파일 로드 완료
[2026-02-18 00:24:04] [INFO] [Database] DB 연결 성공: D:\py_train\voc_noti\app\data\voc.db
[2026-02-18 00:24:04] [INFO] [TimetableService] 시각표 로드 완료: 40929 행 (경로: D:\py_train\voc_noti\app\data\line1_sp_timetable.parquet)
[2026-02-18 00:24:05] [INFO] [Controller] 테스트 모드: 웹 크롤링 생략, 로컬 DB 사용.
[2026-02-18 00:24:05] [INFO] [Controller] 시작 알림 표시됨
[2026-02-18 00:26:47] [ERROR] [Controller] 통계 창 열기 실패: If you use `@root_validator` with pre=False (the default) you MUST specify `skip_on_failure=True`. Note that `@root_validator` is deprecated and should be replaced with `@model_validator`.

For further information visit https://errors.pydantic.dev/2.12/u/root-validator-pre-skip
Traceback (most recent call last):
  File "D:\py_train\voc_noti\app\controllers\controller.py", line 380, in _actual_open_statistics
    from view.dialogs.statistics_dialog import StatisticsDialog
  File "D:\py_train\voc_noti\app\view\dialogs\statistics_dialog.py", line 24, in <module>
    from models.statistics import StatisticsOptions
  File "D:\py_train\voc_noti\app\models\statistics.py", line 21, in <module>
    class StatisticsReport(BaseModel):
  File "D:\py_train\voc_noti\app\models\statistics.py", line 86, in StatisticsReport
    @root_validator
     ^^^^^^^^^^^^^^
  File "D:\py_train\voc_noti\.venv\Lib\site-packages\pydantic\deprecated\class_validators.py", line 234, in root_validator
    return root_validator()(*__args)  # type: ignore
           ^^^^^^^^^^^^^^^^
  File "D:\py_train\voc_noti\.venv\Lib\site-packages\pydantic\deprecated\class_validators.py", line 240, in root_validator
    raise PydanticUserError(
pydantic.errors.PydanticUserError: If you use `@root_validator` with pre=False (the default) you MUST specify `skip_on_failure=True`. Note that `@root_validator` is deprecated and should be replaced with `@model_validator`.

For further information visit https://errors.pydantic.dev/2.12/u/root-validator-pre-skip
[2026-02-18 00:29:10] [INFO] [Controller] 애플리케이션 종료 중...
[2026-02-18 00:31:12] [INFO] [Main] == Application Startup [TEST MODE] ==
[2026-02-18 00:31:12] [INFO] [Controller] 컨트롤러 초기화 중 (테스트 모드=True)
[2026-02-18 00:31:12] [INFO] [Controller] 설정 파일 로드 완료
[2026-02-18 00:31:12] [INFO] [Database] DB 연결 성공: D:\py_train\voc_noti\app\data\voc.db
[2026-02-18 00:31:12] [INFO] [TimetableService] 시각표 로드 완료: 40929 행 (경로: D:\py_train\voc_noti\app\data\line1_sp_timetable.parquet)
[2026-02-18 00:31:13] [INFO] [Controller] 테스트 모드: 웹 크롤링 생략, 로컬 DB 사용.
[2026-02-18 00:31:13] [INFO] [Controller] 시작 알림 표시됨
[2026-02-18 00:31:45] [INFO] [ChartGenerator] 한글 폰트 설정: Malgun Gothic
[2026-02-18 00:31:45] [INFO] [Database] 통계 인덱스 생성 완료
[2026-02-18 00:32:10] [INFO] [StatisticsService] 통계 보고서 생성 시작: 2026-01-19 ~ 2026-02-18
[2026-02-18 00:32:10] [INFO] [ChartGenerator] 막대 그래프 생성 완료: D:\py_train\voc_noti\app\data\charts\dept_2026-01-19_2026-02-18.png
[2026-02-18 00:32:10] [INFO] [ChartGenerator] 파이 차트 생성 완료: D:\py_train\voc_noti\app\data\charts\status_2026-01-19_2026-02-18.png
[2026-02-18 00:32:10] [INFO] [ChartGenerator] 선 그래프 생성 완료: D:\py_train\voc_noti\app\data\charts\period_2026-01-19_2026-02-18.png
[2026-02-18 00:32:11] [INFO] [ChartGenerator] 워드 클라우드 생성 완료: D:\py_train\voc_noti\app\data\charts\keywords_2026-01-19_2026-02-18.png (단어 수: 9)
[2026-02-18 00:32:11] [INFO] [StatisticsService] PDF 한글 폰트 등록 성공: Malgun Gothic
[2026-02-18 00:32:12] [INFO] [StatisticsService] PDF 보고서 생성 완료: D:\py_train\voc_noti\app\data\reports\VOC_통계_2026-01-19_2026-02-18.pdf
[2026-02-18 00:32:12] [INFO] [StatisticsService] 통계 보고서 생성 완료
[2026-02-18 00:33:28] [ERROR] [Controller] 보고서 생성 요청 실패: 'ReportService' object has no attribute 'get_line_spec'
Traceback (most recent call last):
  File "D:\py_train\voc_noti\app\controllers\controller.py", line 448, in request_create_report
    ReportOptionDialog(target_parent, self, data, callback=actual_generate)
  File "D:\py_train\voc_noti\app\view\dialogs\report_option_dialog.py", line 116, in __init__
    self._add_voc_extract_section()
  File "D:\py_train\voc_noti\app\view\dialogs\report_option_dialog.py", line 202, in _add_voc_extract_section
    self._update_ui_constraints(p.get("line_str", ""))
  File "D:\py_train\voc_noti\app\view\dialogs\report_option_dialog.py", line 239, in _update_ui_constraints
    spec = self.controller.report_service.get_line_spec(line_str)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'ReportService' object has no attribute 'get_line_spec'
[2026-02-18 00:34:53] [INFO] [Controller] 애플리케이션 종료 중...
[2026-02-18 00:41:45] [INFO] [Main] == Application Startup [TEST MODE] ==
[2026-02-18 00:41:45] [INFO] [Controller] 컨트롤러 초기화 중 (테스트 모드=True)
[2026-02-18 00:41:45] [INFO] [Controller] 설정 파일 로드 완료
[2026-02-18 00:41:45] [INFO] [Database] DB 연결 성공: D:\py_train\voc_noti\app\data\voc.db
[2026-02-18 00:41:45] [INFO] [TimetableService] 시각표 로드 완료: 40929 행 (경로: D:\py_train\voc_noti\app\data\line1_sp_timetable.parquet)
[2026-02-18 00:41:45] [INFO] [Controller] 테스트 모드: 웹 크롤링 생략, 로컬 DB 사용.
[2026-02-18 00:41:45] [INFO] [Controller] 시작 알림 표시됨
[2026-02-18 00:41:56] [INFO] [ChartGenerator] 한글 폰트 설정: Malgun Gothic
[2026-02-18 00:41:56] [INFO] [Database] 통계 인덱스 생성 완료
[2026-02-18 00:42:15] [INFO] [ReportService] 열차 후보군 발견: 7개
[2026-02-18 00:42:15] [ERROR] [Controller] 보고서 생성 요청 실패: 'max_set'
Traceback (most recent call last):
  File "D:\py_train\voc_noti\app\controllers\controller.py", line 448, in request_create_report
    ReportOptionDialog(target_parent, self, data, callback=actual_generate)
  File "D:\py_train\voc_noti\app\view\dialogs\report_option_dialog.py", line 116, in __init__
    self._add_voc_extract_section()
  File "D:\py_train\voc_noti\app\view\dialogs\report_option_dialog.py", line 202, in _add_voc_extract_section
    self._update_ui_constraints(p.get("line_str", ""))
  File "D:\py_train\voc_noti\app\view\dialogs\report_option_dialog.py", line 240, in _update_ui_constraints
    self.current_max_set = spec["max_set"]
                           ~~~~^^^^^^^^^^^
KeyError: 'max_set'
[2026-02-18 00:55:00] [INFO] [Controller] 애플리케이션 종료 중...
[2026-02-18 01:01:50] [INFO] [Main] == Application Startup [TEST MODE] ==
[2026-02-18 01:01:50] [INFO] [Controller] 컨트롤러 초기화 중 (테스트 모드=True)
[2026-02-18 01:01:50] [INFO] [Controller] 설정 파일 로드 완료
[2026-02-18 01:01:50] [INFO] [Database] DB 연결 성공: D:\py_train\voc_noti\app\data\voc.db
[2026-02-18 01:01:50] [INFO] [TimetableService] 시각표 로드 완료: 40929 행 (경로: D:\py_train\voc_noti\app\data\line1_sp_timetable.parquet)
[2026-02-18 01:01:51] [INFO] [Controller] 테스트 모드: 웹 크롤링 생략, 로컬 DB 사용.
[2026-02-18 01:01:51] [INFO] [Controller] 시작 알림 표시됨
[2026-02-18 01:02:09] [ERROR] [Controller] 보고서 생성 요청 실패: 'max_set'
Traceback (most recent call last):
  File "D:\py_train\voc_noti\app\controllers\controller.py", line 438, in request_create_report
    ReportOptionDialog(target_parent, self, data, callback=actual_generate)
  File "D:\py_train\voc_noti\app\view\dialogs\report_option_dialog.py", line 116, in __init__
    self._add_voc_extract_section()
  File "D:\py_train\voc_noti\app\view\dialogs\report_option_dialog.py", line 202, in _add_voc_extract_section
    self._update_ui_constraints(p.get("line_str", ""))
  File "D:\py_train\voc_noti\app\view\dialogs\report_option_dialog.py", line 240, in _update_ui_constraints
    self.current_max_set = spec["max_set"]
                           ~~~~^^^^^^^^^^^
KeyError: 'max_set'
[2026-02-18 01:26:31] [ERROR] [Controller] 보고서 생성 요청 실패: 'max_set'
Traceback (most recent call last):
  File "D:\py_train\voc_noti\app\controllers\controller.py", line 438, in request_create_report
    ReportOptionDialog(target_parent, self, data, callback=actual_generate)
  File "D:\py_train\voc_noti\app\view\dialogs\report_option_dialog.py", line 116, in __init__
    self._add_voc_extract_section()
  File "D:\py_train\voc_noti\app\view\dialogs\report_option_dialog.py", line 202, in _add_voc_extract_section
    self._update_ui_constraints(p.get("line_str", ""))
  File "D:\py_train\voc_noti\app\view\dialogs\report_option_dialog.py", line 240, in _update_ui_constraints
    self.current_max_set = spec["max_set"]
                           ~~~~^^^^^^^^^^^
KeyError: 'max_set'
[2026-02-18 01:26:41] [INFO] [Controller] 애플리케이션 종료 중...
[2026-02-18 01:28:51] [INFO] [Main] == Application Startup [TEST MODE] ==
[2026-02-18 01:28:51] [INFO] [Controller] 컨트롤러 초기화 중 (테스트 모드=True)
[2026-02-18 01:28:51] [INFO] [Controller] 설정 파일 로드 완료
[2026-02-18 01:28:51] [INFO] [Database] DB 연결 성공: D:\py_train\voc_noti\app\data\voc.db
[2026-02-18 01:28:51] [INFO] [TimetableService] 시각표 로드 완료: 40929 행 (경로: D:\py_train\voc_noti\app\data\line1_sp_timetable.parquet)
[2026-02-18 01:28:51] [INFO] [Controller] 테스트 모드: 웹 크롤링 생략, 로컬 DB 사용.
[2026-02-18 01:28:51] [INFO] [Controller] 시작 알림 표시됨
[2026-02-18 01:29:01] [ERROR] [Controller] 보고서 생성 요청 실패: 'max_set'
Traceback (most recent call last):
  File "D:\py_train\voc_noti\app\controllers\controller.py", line 438, in request_create_report
    ReportOptionDialog(target_parent, self, data, callback=actual_generate)
  File "D:\py_train\voc_noti\app\view\dialogs\report_option_dialog.py", line 116, in __init__
    self._add_voc_extract_section()
  File "D:\py_train\voc_noti\app\view\dialogs\report_option_dialog.py", line 202, in _add_voc_extract_section
    self._update_ui_constraints(p.get("line_str", ""))
  File "D:\py_train\voc_noti\app\view\dialogs\report_option_dialog.py", line 240, in _update_ui_constraints
    self.current_max_set = spec["max_set"]
                           ~~~~^^^^^^^^^^^
KeyError: 'max_set'
[2026-02-18 01:38:35] [INFO] [Controller] 애플리케이션 종료 중...
[2026-02-18 01:38:37] [INFO] [Main] == Application Startup [TEST MODE] ==
[2026-02-18 01:38:37] [INFO] [Controller] 컨트롤러 초기화 중 (테스트 모드=True)
[2026-02-18 01:38:37] [INFO] [Controller] 설정 파일 로드 완료
[2026-02-18 01:38:37] [INFO] [Database] DB 연결 성공: D:\py_train\voc_noti\app\data\voc.db
[2026-02-18 01:38:37] [INFO] [TimetableService] 시각표 로드 완료: 40929 행 (경로: D:\py_train\voc_noti\app\data\line1_sp_timetable.parquet)
[2026-02-18 01:38:37] [INFO] [Controller] 테스트 모드: 웹 크롤링 생략, 로컬 DB 사용.
[2026-02-18 01:38:37] [INFO] [Controller] 시작 알림 표시됨
[2026-02-18 01:38:58] [INFO] [ReportService] 열차 후보군 발견: 7개
[2026-02-18 01:39:16] [INFO] [Controller] 설정 파일 저장 완료
[2026-02-18 01:52:22] [INFO] [Controller] 애플리케이션 종료 중...
[2026-02-18 01:54:34] [INFO] [Main] == Application Startup [TEST MODE] ==
[2026-02-18 01:54:34] [INFO] [Controller] 컨트롤러 초기화 중 (테스트 모드=True)
[2026-02-18 01:54:34] [INFO] [Controller] 설정 파일 로드 완료
[2026-02-18 01:54:34] [INFO] [Database] DB 연결 성공: D:\py_train\voc_noti\app\data\voc.db
[2026-02-18 01:54:34] [INFO] [TimetableService] 시각표 로드 완료: 40929 행 (경로: D:\py_train\voc_noti\app\data\line1_sp_timetable.parquet)
[2026-02-18 01:54:34] [INFO] [Controller] 테스트 모드: 웹 크롤링 생략, 로컬 DB 사용.
[2026-02-18 01:54:34] [INFO] [Controller] 시작 알림 표시됨
[2026-02-18 01:55:28] [INFO] [Controller] 설정 파일 저장 완료
[2026-02-18 02:00:02] [INFO] [Controller] 애플리케이션 종료 중...
[2026-02-18 10:11:40] [INFO] [Main] == Application Startup [LIVE MODE] ==
[2026-02-18 10:11:40] [INFO] [Controller] 컨트롤러 초기화 중 (테스트 모드=False)
[2026-02-18 10:11:40] [INFO] [Controller] 설정 파일 로드 완료
[2026-02-18 10:11:40] [INFO] [Database] DB 연결 성공: D:\py_train\voc_noti\app\data\voc.db
[2026-02-18 10:11:40] [INFO] [TimetableService] 시각표 로드 완료: 40929 행 (경로: D:\py_train\voc_noti\app\data\line1_sp_timetable.parquet)
[2026-02-18 10:11:40] [INFO] [Controller] 스케줄 업데이트됨: 크롤링 10분 / 알림 체크 5분
[2026-02-18 10:11:40] [INFO] [Controller] 크롤링 사이클 시작...
[2026-02-18 10:11:40] [INFO] [Controller] 스케줄러 시작됨
[2026-02-18 10:11:40] [INFO] [Controller] 로그인 세션 만료. 재로그인 시도 중...
[2026-02-18 10:11:40] [INFO] [Controller] 시작 알림 표시됨
[2026-02-18 10:11:41] [INFO] [Scraper] 116696 계정으로 로그인 시도 중...
[2026-02-18 10:11:55] [ERROR] [Controller] 로그인 실패: 재로그인 실패. 다음 사이클에 재시도합니다.
[2026-02-18 10:12:38] [INFO] [ReportService] 열차 후보군 발견: 9개
[2026-02-18 10:12:38] [INFO] [ReportService] 후보군 중 본문 일치: 2116
[2026-02-18 10:12:47] [INFO] [Controller] 설정 파일 저장 완료
[2026-02-18 10:16:40] [INFO] [Controller] 신규 DB 데이터 확인 중...
[2026-02-18 10:20:54] [INFO] [Controller] 애플리케이션 종료 중...
[2026-02-18 10:20:54] [INFO] [Controller] 스케줄러 중지됨
[2026-02-18 10:38:26] [INFO] [Main] == Application Startup [LIVE MODE] ==
[2026-02-18 10:38:26] [INFO] [Controller] 컨트롤러 초기화 중 (테스트 모드=False)
[2026-02-18 10:38:26] [INFO] [Controller] 설정 파일 로드 완료
[2026-02-18 10:38:26] [INFO] [Database] DB 연결 성공: D:\py_train\voc_noti\app\data\voc.db
[2026-02-18 10:38:26] [INFO] [TimetableService] 시각표 로드 완료: 40929 행 (경로: D:\py_train\voc_noti\app\data\line1_sp_timetable.parquet)
[2026-02-18 10:38:26] [INFO] [Controller] 스케줄 업데이트됨: 크롤링 10분 / 신규 알림 5분 / 미확인 체크 30분
[2026-02-18 10:38:26] [INFO] [Controller] 크롤링 사이클 시작...
[2026-02-18 10:38:26] [INFO] [Controller] 스케줄러 시작됨
[2026-02-18 10:38:26] [INFO] [Controller] 로그인 세션 만료. 재로그인 시도 중...
[2026-02-18 10:38:26] [INFO] [Controller] 시작 알림 표시됨
[2026-02-18 10:38:27] [INFO] [Scraper] 116696 계정으로 로그인 시도 중...
[2026-02-18 10:38:38] [INFO] [Controller] 설정 파일 저장 완료
[2026-02-18 10:38:42] [ERROR] [Controller] 로그인 실패: 재로그인 실패. 다음 사이클에 재시도합니다.
[2026-02-18 10:43:26] [INFO] [Controller] 신규 DB 데이터 확인 중...
[2026-02-18 10:46:14] [INFO] [ChartGenerator] 한글 폰트 설정: Malgun Gothic
[2026-02-18 10:46:14] [INFO] [Database] 통계 인덱스 생성 완료
[2026-02-18 10:47:42] [INFO] [StatisticsService] 통계 보고서 생성 시작: 2026-01-19 ~ 2026-02-18
[2026-02-18 10:47:42] [INFO] [ChartGenerator] 막대 그래프 생성 완료: D:\py_train\voc_noti\app\data\charts\dept_2026-01-19_2026-02-18.png
[2026-02-18 10:47:42] [INFO] [ChartGenerator] 파이 차트 생성 완료: D:\py_train\voc_noti\app\data\charts\status_2026-01-19_2026-02-18.png
[2026-02-18 10:47:42] [INFO] [ChartGenerator] 선 그래프 생성 완료: D:\py_train\voc_noti\app\data\charts\period_2026-01-19_2026-02-18.png
[2026-02-18 10:47:43] [INFO] [ChartGenerator] 워드 클라우드 생성 완료: D:\py_train\voc_noti\app\data\charts\keywords_2026-01-19_2026-02-18.png (단어 수: 9)
[2026-02-18 10:47:43] [INFO] [StatisticsService] Excel 보고서 생성 완료: D:\py_train\voc_noti\app\data\reports\VOC_통계_2026-01-19_2026-02-18.xlsx
[2026-02-18 10:47:43] [INFO] [StatisticsService] 통계 보고서 생성 완료
[2026-02-18 10:48:19] [INFO] [Controller] 애플리케이션 종료 중...
[2026-02-18 10:48:19] [INFO] [Controller] 스케줄러 중지됨
[2026-02-18 16:06:01] [INFO] [Main] == Application Startup [TEST MODE] ==
[2026-02-18 16:06:01] [INFO] [Controller] 컨트롤러 초기화 중 (테스트 모드=True, 테스트 즉시 업데이트 확인=True)
[2026-02-18 16:06:01] [INFO] [Controller] 설정 파일 로드 완료
[2026-02-18 16:06:01] [INFO] [Database] DB 연결 성공: D:\py_train\voc_noti\app\data\voc.db
[2026-02-18 16:06:01] [INFO] [TimetableService] 시각표 로드 완료: 40929 행 (경로: D:\py_train\voc_noti\app\data\line1_sp_timetable.parquet)
[2026-02-18 16:06:02] [INFO] [Controller] 업데이터 초기화 완료
[2026-02-18 16:06:02] [INFO] [Controller] 테스트 모드: 웹 크롤링 생략, 로컬 DB 사용.
[2026-02-18 16:06:02] [INFO] [Controller] 테스트 모드: 시작 직후 업데이트 1회 확인을 수행합니다.
[2026-02-18 16:06:02] [INFO] [Controller] 시작 알림 표시됨
[2026-02-18 16:06:03] [INFO] [Controller] 수동 업데이트 확인 시작
[2026-02-18 16:06:03] [INFO] [Controller] 수동 업데이트 확인 결과: 새 버전 3.5.5
[2026-02-18 16:06:10] [ERROR] [Controller] 업데이트 준비 실패: updater.exe를 찾을 수 없습니다: D:\py_train\voc_noti\updater.exe
[2026-02-18 16:06:13] [ERROR] [Controller] 업데이트 준비 실패: updater.exe를 찾을 수 없습니다: D:\py_train\voc_noti\updater.exe
[2026-02-18 16:08:03] [INFO] [Controller] 애플리케이션 종료 중...
[2026-02-18 16:08:05] [INFO] [Main] == Application Startup [TEST MODE] ==
[2026-02-18 16:08:05] [INFO] [Controller] 컨트롤러 초기화 중 (테스트 모드=True, 테스트 즉시 업데이트 확인=True)
[2026-02-18 16:08:05] [INFO] [Controller] 설정 파일 로드 완료
[2026-02-18 16:08:05] [INFO] [Database] DB 연결 성공: D:\py_train\voc_noti\app\data\voc.db
[2026-02-18 16:08:05] [INFO] [TimetableService] 시각표 로드 완료: 40929 행 (경로: D:\py_train\voc_noti\app\data\line1_sp_timetable.parquet)
[2026-02-18 16:08:06] [INFO] [Controller] 업데이터 초기화 완료
[2026-02-18 16:08:06] [INFO] [Controller] 테스트 모드: 웹 크롤링 생략, 로컬 DB 사용.
[2026-02-18 16:08:06] [INFO] [Controller] 테스트 모드: 시작 직후 업데이트 1회 확인을 수행합니다.
[2026-02-18 16:08:06] [INFO] [Controller] 시작 알림 표시됨
[2026-02-18 16:08:07] [INFO] [Controller] 수동 업데이트 확인 시작
[2026-02-18 16:08:07] [INFO] [Controller] 수동 업데이트 확인 결과: 새 버전 3.5.5
[2026-02-18 16:08:11] [ERROR] [Controller] 업데이트 준비 실패: updater.exe를 찾을 수 없습니다: D:\py_train\voc_noti\updater.exe
[2026-02-18 16:49:07] [INFO] [Controller] 애플리케이션 종료 중...
