#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ 檢查原始快取資料庫中ROW291的翻譯記錄 """ import sys import os sys.path.insert(0, os.path.dirname(os.path.abspath(__file__))) # 設定編碼 sys.stdout.reconfigure(encoding='utf-8') from app import create_app def check_original_cache_row291(): """檢查原始快取資料庫中ROW291的翻譯記錄""" print("=" * 80) print("檢查原始快取資料庫中的翻譯記錄") print("重點:ROW291 vs ROW349 的差異") print("=" * 80) app = create_app() with app.app_context(): from sqlalchemy import text as sql_text from app import db # 1. 檢查ROW291附近的記錄 print(f"1. 檢查ROW291附近的韓文翻譯記錄") print("-" * 60) result = db.session.execute(sql_text(""" SELECT id, source_text, translated_text, target_language, created_at FROM dt_translation_cache WHERE id >= 285 AND id <= 295 AND target_language = 'ko' ORDER BY id """)) row291_records = result.fetchall() if not row291_records: print("❌ ROW285-295範圍內沒有韓文記錄") else: for record in row291_records: print(f"\nROW {record[0]}:") print(f" 原文: {repr(record[1][:50])}...") print(f" 韓文: {repr(record[2][:50])}...") print(f" 時間: {record[4]}") # 2. 檢查ROW349附近的記錄 (我手動補充的) print(f"\n2. 檢查ROW349附近的韓文翻譯記錄 (手動補充)") print("-" * 60) result = db.session.execute(sql_text(""" SELECT id, source_text, translated_text, target_language, created_at FROM dt_translation_cache WHERE id >= 345 AND id <= 355 AND target_language = 'ko' ORDER BY id """)) row349_records = result.fetchall() if not row349_records: print("❌ ROW345-355範圍內沒有韓文記錄") else: for record in row349_records: print(f"\nROW {record[0]}:") print(f" 原文: {repr(record[1][:50])}...") print(f" 韓文: {repr(record[2][:50])}...") print(f" 時間: {record[4]}") # 3. 直接查找D2內容的所有翻譯記錄 print(f"\n3. 查找D2內容的所有翻譯記錄") print("-" * 60) d2_content = "與 WB inline 串線(DB→WB)、時效快;支援 Sn/Au 晶片\n最小可支援9mil晶粒\n支援EAP管控" result = db.session.execute(sql_text(""" SELECT id, source_text, translated_text, target_language, created_at FROM dt_translation_cache WHERE source_text = :text ORDER BY id """), {'text': d2_content}) d2_records = result.fetchall() if not d2_records: print(f"❌ 沒有找到D2內容的翻譯記錄") print(f" 查找內容: {repr(d2_content[:50])}...") else: print(f"✅ 找到 {len(d2_records)} 筆D2翻譯記錄:") for record in d2_records: print(f"\nROW {record[0]} ({record[3]}):") print(f" 原文: {repr(record[1][:50])}...") print(f" 翻譯: {repr(record[2][:50])}...") print(f" 時間: {record[4]}") # 4. 檢查最新的韓文快取總數 print(f"\n4. 檢查韓文快取總數") print("-" * 60) result = db.session.execute(sql_text(""" SELECT COUNT(*) as total, MIN(id) as min_id, MAX(id) as max_id, MIN(created_at) as earliest, MAX(created_at) as latest FROM dt_translation_cache WHERE target_language = 'ko' """)) stats = result.fetchone() print(f"韓文快取統計:") print(f" 總數: {stats[0]}") print(f" ID範圍: {stats[1]} - {stats[2]}") print(f" 時間範圍: {stats[3]} - {stats[4]}") # 5. 比較原始DIFY翻譯 vs 手動補充翻譯 print(f"\n5. 比較原始DIFY翻譯 vs 手動補充翻譯") print("-" * 60) if d2_records: if len(d2_records) == 1: print("✅ 只有一筆D2翻譯記錄,沒有重複") else: print(f"⚠️ 有 {len(d2_records)} 筆重複的D2翻譯記錄:") for i, record in enumerate(d2_records, 1): print(f"\n 記錄 {i} (ROW {record[0]}):") print(f" 語言: {record[3]}") print(f" 翻譯: {record[2][:100]}...") print(f" 時間: {record[4]}") # 判斷來源 if record[0] <= 300: print(f" 來源: 🤖 原始DIFY翻譯") else: print(f" 來源: ✋ 手動補充翻譯") # 6. 查看為什麼原始翻譯沒有生效 print(f"\n6. 分析翻譯映射問題") print("-" * 60) if d2_records: original_record = min(d2_records, key=lambda x: x[0]) # 最早的記錄 print(f"原始翻譯記錄 (ROW {original_record[0]}):") print(f" 是否為韓文: {original_record[3] == 'ko'}") print(f" 翻譯內容長度: {len(original_record[2])}") print(f" 翻譯內容: {repr(original_record[2])}") if original_record[3] == 'ko' and original_record[2]: print("✅ 原始翻譯記錄看起來正常") print("❓ 問題可能在於翻譯映射邏輯沒有正確使用這個快取") else: print("❌ 原始翻譯記錄有問題") print(f"\n" + "=" * 80) print("原始快取記錄檢查完成!") print("請查看上述分析找出真正的問題原因") print("=" * 80) if __name__ == "__main__": check_original_cache_row291()