#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ 使用修復後的邏輯重新生成韓文Excel檔案 預期: 使用原始DIFY翻譯而非手動補充翻譯 """ import sys import os sys.path.insert(0, os.path.dirname(os.path.abspath(__file__))) # 設定編碼 sys.stdout.reconfigure(encoding='utf-8') from pathlib import Path from app import create_app def regenerate_with_original_dify(): """使用原始DIFY翻譯重新生成韓文Excel檔案""" print("=" * 80) print("使用修復後的邏輯重新生成韓文Excel檔案") print("預期: D2應該使用原始DIFY翻譯 (包含 '와이어 본딩')") print("=" * 80) # 檔案路徑 prod_dir = Path(r"C:\Users\EGG\WORK\data\user_scrip\TOOL\Document_translator_V2\uploads\98158984-f335-44f5-a0b4-88fb8ccd5d78") original_file = prod_dir / "original_panjit_98158984.xlsx" if not original_file.exists(): print(f"❌ 原始文件不存在: {original_file}") return print(f"✅ 原始文件: {original_file.name}") app = create_app() with app.app_context(): from app.services.translation_service import ExcelParser from app import db import openpyxl try: print(f"\n1. 重新生成韓文翻譯檔案") print("-" * 60) parser = ExcelParser(str(original_file)) # 生成新的翻譯檔案 (會覆蓋舊的) translated_file_path = parser.generate_translated_document( translations={}, target_language='ko', output_dir=prod_dir ) print(f"✅ 韓文翻譯檔案已重新生成: {Path(translated_file_path).name}") print(f"\n2. 驗證D2是否使用原始DIFY翻譯") print("-" * 60) # 檢查新生成的D2內容 wb_trans = openpyxl.load_workbook(translated_file_path, data_only=False) d2_value = wb_trans.active['D2'].value print(f"D2翻譯內容:") print(f" {repr(d2_value)}") # 檢查翻譯來源特徵 if isinstance(d2_value, str) and '\n' in d2_value: lines = d2_value.split('\n') if len(lines) >= 2: korean_part = lines[1] # 第二行是韓文翻譯 if "와이어 본딩" in korean_part: print(f" 🎯 ✅ 使用原始DIFY翻譯!") print(f" 特徵: 包含 '와이어 본딩'") print(f" 韓文: {korean_part}") result = "SUCCESS_ORIGINAL" elif "연결" in korean_part: print(f" ✋ ❌ 仍在使用手動補充翻譯") print(f" 特徵: 包含 '연결'") print(f" 韓文: {korean_part}") result = "STILL_MANUAL" else: print(f" ❓ 無法判斷翻譯來源") print(f" 韓文: {korean_part}") result = "UNKNOWN" else: print(f" ❌ 格式異常,不是雙行格式") result = "FORMAT_ERROR" else: print(f" ❌ D2沒有翻譯或格式不正確") result = "NO_TRANSLATION" wb_trans.close() # 3. 檢查其他關鍵儲存格 print(f"\n3. 檢查其他關鍵儲存格") print("-" * 60) wb_trans = openpyxl.load_workbook(translated_file_path, data_only=False) test_cells = ['D3', 'D4', 'D5'] translated_cells = 0 for cell_name in test_cells: cell_value = wb_trans.active[cell_name].value if isinstance(cell_value, str) and '\n' in cell_value: lines = cell_value.split('\n') if len(lines) >= 2: korean_part = lines[1] print(f"✅ {cell_name}: 已翻譯") print(f" 韓文: {korean_part[:30]}...") translated_cells += 1 else: print(f"❌ {cell_name}: 格式異常") else: print(f"❌ {cell_name}: 未翻譯") print(f"\n其他儲存格翻譯狀況: {translated_cells}/{len(test_cells)} 成功") wb_trans.close() # 4. 最終結果評估 print(f"\n4. 最終結果評估") print("-" * 60) if result == "SUCCESS_ORIGINAL": print(f"🎉 完美!修復成功") print(f" ✅ D2正確使用原始DIFY翻譯") print(f" ✅ 翻譯品質: 原始API翻譯 (更準確)") print(f" ✅ 問題根源已解決: 文字格式不匹配") elif result == "STILL_MANUAL": print(f"⚠️ 部分成功") print(f" ❌ D2仍使用手動翻譯") print(f" ❓ 可能需要檢查查詢邏輯或重新啟動Celery") else: print(f"❌ 修復失敗") print(f" 需要進一步排查問題") # 5. 檔案資訊 print(f"\n5. 檔案資訊") print("-" * 60) print(f"韓文翻譯檔案:") print(f" 檔案名稱: {Path(translated_file_path).name}") print(f" 檔案路徑: {translated_file_path}") print(f" 檔案大小: {Path(translated_file_path).stat().st_size / 1024:.1f} KB") except Exception as e: print(f"❌ 重新生成韓文翻譯檔案時發生錯誤: {str(e)}") import traceback print(f"錯誤詳情: {traceback.format_exc()}") print(f"\n" + "=" * 80) print("使用原始DIFY翻譯重新生成完成!") print("=" * 80) if __name__ == "__main__": regenerate_with_original_dify()