fix(ai,reader): robust sentence segmentation without abbreviation cutoffs & context-aware literary translation
- Implement robustSentenceSplit across reader.js and backend (miner.py, cefr.py) to prevent false cutoffs on honorifics (Mr., Mrs., Dr.), single-letter initials (John F. Kennedy), decimals, acronyms (U.S., U.K.), and abbreviations (No. 4, etc.) - Upgrade translation prompt to professional literary Russian, eliminating literal word-for-word translation and preserving titles/honorifics - Inject surrounding paragraph context into translation API to avoid out-of-context translations - Inject offline dictionary hints into LLM prompt for accurate contextual word meaning - Prefer qwen2.5:3b for higher translation fluency and fidelity - Purge truncated cache entries from sentence_translations and restore Card 30 (briefcase) with authentic full sentence - Bump Service Worker cache to notes-v6.0 - Add unit tests for robust sentence splitting, prompt formatting, and translation API
This commit is contained in:
+2
-1
@@ -190,6 +190,7 @@ class RfcFetchRequest(BaseModel):
|
||||
class SentenceTranslateRequest(BaseModel):
|
||||
sentence: str = Field(..., min_length=1)
|
||||
target_word: Optional[str] = ""
|
||||
context: Optional[str] = ""
|
||||
|
||||
|
||||
class CefrAnswerRequest(BaseModel):
|
||||
@@ -446,7 +447,7 @@ async def api_translate_sentence(
|
||||
clean_s = req.sentence.strip()
|
||||
if not clean_s:
|
||||
raise HTTPException(status_code=400, detail="Sentence cannot be empty")
|
||||
return await translate_sentence_ai(clean_s, req.target_word or "")
|
||||
return await translate_sentence_ai(clean_s, req.target_word or "", req.context or "")
|
||||
|
||||
|
||||
@app.get("/api/ai/status")
|
||||
|
||||
Reference in New Issue
Block a user