4th_fix time error

This commit is contained in:
beabigegg
2025-09-03 09:05:51 +08:00
parent e6e5332705
commit cce3fd4925
26 changed files with 2551 additions and 82 deletions

View File

@@ -0,0 +1,137 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
測試_append_after函數是否正常工作
"""
import sys
import os
import tempfile
from pathlib import Path
# 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.services.document_processor import _append_after, _is_our_insert_block
def test_append_after_function():
"""測試_append_after函數是否正常工作"""
print("=== 測試_append_after函數 ===")
try:
from docx import Document
from docx.shared import Pt
# 創建測試文檔
doc = Document()
# 添加原始段落
original_para = doc.add_paragraph("這是原始中文段落。")
print(f"✅ 創建原始段落: {original_para.text}")
# 使用_append_after插入英文翻譯
translation_text = "This is the English translation."
try:
new_para = _append_after(original_para, translation_text, italic=True, font_size_pt=12)
print(f"✅ 使用_append_after插入翻譯: {new_para.text}")
# 檢查插入的段落是否有我們的標記
if _is_our_insert_block(new_para):
print(f"✅ 翻譯段落包含零寬空格標記")
else:
print(f"❌ 翻譯段落缺少零寬空格標記")
# 檢查格式是否正確
if new_para.runs and new_para.runs[0].italic:
print(f"✅ 翻譯段落格式正確(斜體)")
else:
print(f"❌ 翻譯段落格式不正確")
except Exception as e:
print(f"❌ _append_after插入失敗: {e}")
return False
# 再插入一個翻譯來測試鏈式插入
try:
vietnamese_translation = "Đây là bản dịch tiếng Việt."
new_para2 = _append_after(new_para, vietnamese_translation, italic=True, font_size_pt=12)
print(f"✅ 鏈式插入第二個翻譯: {new_para2.text}")
except Exception as e:
print(f"❌ 鏈式插入失敗: {e}")
# 保存測試文檔
test_file = Path(tempfile.gettempdir()) / "test_append_after.docx"
doc.save(str(test_file))
print(f"✅ 測試文檔保存至: {test_file}")
# 重新讀取文檔驗證
try:
doc2 = Document(str(test_file))
paragraphs = [p.text.strip() for p in doc2.paragraphs if p.text.strip()]
print(f"\n📄 測試文檔內容驗證:")
print(f"總段落數: {len(paragraphs)}")
for i, para_text in enumerate(paragraphs):
has_chinese = any('\u4e00' <= c <= '\u9fff' for c in para_text)
has_english = any(ord(c) < 128 and c.isalpha() for c in para_text)
has_vietnamese = any('\u00C0' <= c <= '\u1EF9' for c in para_text)
lang_info = []
if has_chinese:
lang_info.append("中文")
if has_english:
lang_info.append("英文")
if has_vietnamese:
lang_info.append("越南文")
print(f" 段落 {i+1}: [{'/'.join(lang_info)}] {para_text}")
# 檢查是否有正確的交錯格式
expected_sequence = [
("中文", "這是原始中文段落。"),
("英文", "This is the English translation."),
("越南文", "Đây là bản dịch tiếng Việt.")
]
success = True
for i, (expected_lang, expected_text) in enumerate(expected_sequence):
if i < len(paragraphs):
actual_text = paragraphs[i]
if expected_text in actual_text:
print(f" ✅ 段落 {i+1} 包含預期的{expected_lang}內容")
else:
print(f" ❌ 段落 {i+1} 不包含預期的{expected_lang}內容")
success = False
else:
print(f" ❌ 缺少第 {i+1} 個段落")
success = False
if success:
print(f"\n✅ _append_after函數工作正常")
return True
else:
print(f"\n❌ _append_after函數有問題")
return False
except Exception as e:
print(f"❌ 讀取測試文檔失敗: {e}")
return False
except Exception as e:
print(f"❌ 測試失敗: {e}")
return False
if __name__ == "__main__":
success = test_append_after_function()
if success:
print(f"\n🎉 _append_after函數測試通過")
else:
print(f"\n💥 _append_after函數測試失敗")