Files
Document_Translator/check_pending_jobs.py
2025-09-02 16:47:16 +08:00

80 lines
2.9 KiB
Python

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
檢查等待處理的任務
"""
import sys
import os
# Fix encoding for Windows console
if sys.stdout.encoding != 'utf-8':
sys.stdout.reconfigure(encoding='utf-8')
if sys.stderr.encoding != 'utf-8':
sys.stderr.reconfigure(encoding='utf-8')
sys.path.insert(0, os.path.join(os.path.dirname(__file__), 'app'))
from app import create_app
from app.models.job import TranslationJob
def check_pending_jobs():
"""檢查等待處理的任務狀態"""
app = create_app()
with app.app_context():
print("=== 檢查等待處理的任務 ===")
# 查找所有等待處理的任務
pending_jobs = TranslationJob.query.filter_by(status='PENDING').order_by(TranslationJob.created_at.desc()).all()
print(f"找到 {len(pending_jobs)} 個等待處理的任務:")
for job in pending_jobs:
print(f"\n任務ID: {job.job_uuid}")
print(f" 原始檔名: {job.original_filename}")
print(f" 目標語言: {job.target_languages}")
print(f" 創建時間: {job.created_at}")
print(f" 進度: {job.progress}%")
print(f" 狀態: {job.status}")
print(f" 用戶ID: {job.user_id}")
if job.error_message:
print(f" 錯誤信息: {job.error_message}")
# 檢查其他狀態的任務
print(f"\n=== 任務統計 ===")
all_jobs = TranslationJob.query.all()
status_counts = {}
for job in all_jobs:
status_counts[job.status] = status_counts.get(job.status, 0) + 1
for status, count in status_counts.items():
print(f"{status}: {count}")
# 檢查最新任務的詳細信息
if pending_jobs:
latest_job = pending_jobs[0]
print(f"\n=== 最新任務詳細信息 ===")
print(f"任務UUID: {latest_job.job_uuid}")
print(f"檔案路徑: {latest_job.file_path}")
print(f"目標語言: {latest_job.target_languages}")
# 檢查檔案是否存在
from pathlib import Path
if latest_job.file_path and Path(latest_job.file_path).exists():
file_size = Path(latest_job.file_path).stat().st_size
print(f"檔案存在: {latest_job.file_path} ({file_size:,} bytes)")
else:
print(f"檔案不存在: {latest_job.file_path}")
# 檢查原始檔案記錄
original_file = latest_job.get_original_file()
if original_file:
print(f"原始檔案記錄: {original_file.filename}")
print(f" 檔案大小: {original_file.file_size:,} bytes")
print(f" 檔案路徑: {original_file.file_path}")
if __name__ == "__main__":
check_pending_jobs()