update
This commit is contained in:
47
.kiro/specs/article-title-translation/tasks.md
Normal file
47
.kiro/specs/article-title-translation/tasks.md
Normal file
@@ -0,0 +1,47 @@
|
||||
# Implementation Plan
|
||||
|
||||
- [x] 1. Add translate_title method to Ollama client
|
||||
- Create the `translate_title()` method in `news_crawler/ollama_client.py` that accepts a title string and target language parameter
|
||||
- Implement the translation prompt that instructs the model to translate German headlines to English without explanations
|
||||
- Configure Ollama API call with temperature=0.3 and num_predict=100 for consistent title-length translations
|
||||
- Implement response cleaning logic to remove quotes, extract first line only, and trim whitespace
|
||||
- Add error handling for timeout, connection errors, HTTP errors, and empty title input
|
||||
- Return a dictionary with success status, translated_title, error message, and duration fields
|
||||
- _Requirements: 2.1, 2.2, 2.3, 2.4, 2.5, 4.1, 4.2, 4.3, 4.4, 4.5_
|
||||
|
||||
- [x] 2. Integrate translation into crawler service
|
||||
- [x] 2.1 Add translation call in crawl_rss_feed function
|
||||
- Locate the article processing section in `news_crawler/crawler_service.py` after content extraction
|
||||
- Store the original title from article_data or entry
|
||||
- Add conditional check for Config.OLLAMA_ENABLED before calling translation
|
||||
- Call `ollama_client.translate_title()` with the original title
|
||||
- Store the translation_result for later use in article document
|
||||
- _Requirements: 1.1, 2.1_
|
||||
|
||||
- [x] 2.2 Add console logging for translation status
|
||||
- Add "🌐 Translating title..." message before translation call
|
||||
- Add success message with duration: "✓ Title translated (X.Xs)"
|
||||
- Add failure message with error: "⚠ Translation failed: {error}"
|
||||
- _Requirements: 5.1, 5.2, 5.3_
|
||||
|
||||
- [x] 2.3 Update article document structure
|
||||
- Modify the article_doc dictionary to include `title_en` field with translated title or None
|
||||
- Add `translated_at` field set to datetime.utcnow() on success or None on failure
|
||||
- Ensure the original `title` field still contains the German title
|
||||
- _Requirements: 1.2, 3.5_
|
||||
|
||||
- [x] 3. Update newsletter template for bilingual title display
|
||||
- Modify `news_sender/newsletter_template.html` to display English title as primary heading when available
|
||||
- Add conditional logic to show original German title as subtitle only when English translation exists and differs
|
||||
- Style the subtitle with smaller font (13px), gray color (#999999), and italic formatting
|
||||
- Ensure fallback to German title when title_en is NULL or missing
|
||||
- _Requirements: 1.3, 1.4, 1.5_
|
||||
|
||||
- [x] 4. Test the translation feature end-to-end
|
||||
- Rebuild the crawler Docker container with the new translation code
|
||||
- Clear existing articles from the database for clean testing
|
||||
- Trigger a test crawl with max_articles=2 to process fresh articles
|
||||
- Verify console output shows translation status messages
|
||||
- Check MongoDB to confirm title_en and translated_at fields are populated
|
||||
- Send a test newsletter email to verify English titles display correctly with German subtitles
|
||||
- _Requirements: 1.1, 1.2, 1.3, 1.4, 5.1, 5.2, 5.4, 5.5_
|
||||
Reference in New Issue
Block a user