- verbeteringen client

- Invoer van een 'constanten' cache op niveau van useTranslation.js, om in de ProgressTracker de boodschappen in de juiste taal te zetten.
This commit is contained in:
Josako
2025-07-21 17:39:52 +02:00
parent f8f941d1e1
commit 0f33beddf4
6 changed files with 379 additions and 5 deletions

View File

@@ -0,0 +1,193 @@
#!/usr/bin/env python3
"""
Test script to verify the translation implementation in eveai_chat_client.
This script checks:
1. ProgressTracker.vue has proper translation setup
2. MessageHistory.vue has correct historical message exclusion logic
3. Translation composable is properly imported
4. Caching mechanism is implemented
"""
import os
import re
import sys
def check_file_exists(filepath):
"""Check if file exists and return True/False"""
return os.path.exists(filepath)
def read_file_content(filepath):
"""Read file content safely"""
try:
with open(filepath, 'r', encoding='utf-8') as f:
return f.read()
except Exception as e:
print(f"Error reading {filepath}: {e}")
return None
def test_progress_tracker_implementation():
"""Test ProgressTracker.vue implementation"""
print("🔍 Testing ProgressTracker.vue implementation...")
filepath = "/Volumes/OWC4M2_1/Development/Josako/EveAI/TBD/eveai_chat_client/static/assets/vue-components/ProgressTracker.vue"
if not check_file_exists(filepath):
print("❌ ProgressTracker.vue not found")
return False
content = read_file_content(filepath)
if not content:
return False
checks = [
("Translation composable import", r"import.*useTranslationClient.*from.*useTranslation"),
("Cache object", r"const statusTextCache = \{\}"),
("Translated status texts data", r"translatedStatusTexts:\s*\{"),
("Error text computed property", r"errorText\(\)\s*\{"),
("Completed text computed property", r"completedText\(\)\s*\{"),
("Processing text computed property", r"processingText\(\)\s*\{"),
("Template uses computed properties", r"\{\{\s*errorText\s*\}\}"),
("Language change handler", r"handleLanguageChange\(newLanguage\)"),
("Cache check logic", r"if \(statusTextCache\[newLanguage\]\)"),
("Backend translation calls", r"await this\.translateSafe"),
("Event listener setup", r"document\.addEventListener\('language-changed'"),
("Event listener cleanup", r"document\.removeEventListener\('language-changed'")
]
passed = 0
for check_name, pattern in checks:
if re.search(pattern, content, re.MULTILINE | re.DOTALL):
print(f"{check_name}")
passed += 1
else:
print(f"{check_name}")
print(f"ProgressTracker.vue: {passed}/{len(checks)} checks passed")
return passed == len(checks)
def test_message_history_implementation():
"""Test MessageHistory.vue implementation"""
print("\n🔍 Testing MessageHistory.vue implementation...")
filepath = "/Volumes/OWC4M2_1/Development/Josako/EveAI/TBD/eveai_chat_client/static/assets/vue-components/MessageHistory.vue"
if not check_file_exists(filepath):
print("❌ MessageHistory.vue not found")
return False
content = read_file_content(filepath)
if not content:
return False
checks = [
("Translation composable import", r"import.*useTranslationClient.*from.*useTranslation"),
("Setup function with translateSafe", r"setup\(\)\s*\{.*translateSafe.*\}"),
("Historical message exclusion", r"if \(this\.messages\.length === 1.*sender === 'ai'\)"),
("Original content check", r"if \(firstMessage\.originalContent\)"),
("Translation with fallback", r"fallbackText:\s*firstMessage\.originalContent"),
("Event listener setup", r"document\.addEventListener\('language-changed'"),
("Event listener cleanup", r"document\.removeEventListener\('language-changed'")
]
passed = 0
for check_name, pattern in checks:
if re.search(pattern, content, re.MULTILINE | re.DOTALL):
print(f"{check_name}")
passed += 1
else:
print(f"{check_name}")
print(f"MessageHistory.vue: {passed}/{len(checks)} checks passed")
return passed == len(checks)
def test_chat_message_original_content():
"""Test ChatMessage.vue original content storage"""
print("\n🔍 Testing ChatMessage.vue original content storage...")
filepath = "/Volumes/OWC4M2_1/Development/Josako/EveAI/TBD/eveai_chat_client/static/assets/vue-components/ChatMessage.vue"
if not check_file_exists(filepath):
print("❌ ChatMessage.vue not found")
return False
content = read_file_content(filepath)
if not content:
return False
checks = [
("Original content storage", r"this\.message\.originalContent = this\.message\.content"),
("AI message check", r"this\.message\.sender === 'ai'"),
("Original content condition", r"!this\.message\.originalContent")
]
passed = 0
for check_name, pattern in checks:
if re.search(pattern, content, re.MULTILINE):
print(f"{check_name}")
passed += 1
else:
print(f"{check_name}")
print(f"ChatMessage.vue: {passed}/{len(checks)} checks passed")
return passed == len(checks)
def test_translation_composable():
"""Test translation composable exists"""
print("\n🔍 Testing translation composable...")
filepath = "/Volumes/OWC4M2_1/Development/Josako/EveAI/TBD/eveai_chat_client/static/assets/js/composables/useTranslation.js"
if not check_file_exists(filepath):
print("❌ useTranslation.js not found")
return False
content = read_file_content(filepath)
if not content:
return False
checks = [
("useTranslationClient export", r"export function useTranslationClient"),
("translateSafe function", r"const translateSafe = async"),
("Backend API call", r"await translate\("),
("Fallback handling", r"fallbackText")
]
passed = 0
for check_name, pattern in checks:
if re.search(pattern, content, re.MULTILINE):
print(f"{check_name}")
passed += 1
else:
print(f"{check_name}")
print(f"useTranslation.js: {passed}/{len(checks)} checks passed")
return passed == len(checks)
def main():
"""Run all tests"""
print("🚀 Starting translation implementation tests...\n")
tests = [
test_progress_tracker_implementation,
test_message_history_implementation,
test_chat_message_original_content,
test_translation_composable
]
results = []
for test in tests:
results.append(test())
print(f"\n📊 Test Results:")
print(f"Passed: {sum(results)}/{len(results)} tests")
if all(results):
print("🎉 All tests passed! Translation implementation is complete.")
return 0
else:
print("❌ Some tests failed. Please review the implementation.")
return 1
if __name__ == "__main__":
sys.exit(main())