Add word-book practice, iOS app shell, and fix embedded WebView blank screen.

Ship dual-track learning (daily accumulation vs textbook),沪教/商务词书 APIs and UI, native iOS wrapper with bundled H5, and production book import on deploy.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
john
2026-06-06 21:09:27 +08:00
parent 2fae90b597
commit e76fa586f1
76 changed files with 47488 additions and 445 deletions
+8 -6
View File
@@ -34,7 +34,7 @@ class TranslationService:
entry.example_en,
entry.example_cn,
)
return self._placeholder(text, text, "en", "zh")
return self._placeholder(text, "en", "zh")
def _zh_to_en(self, db: Session, text: str) -> dict:
entry = dictionary_service.lookup_zh(db, text)
@@ -48,7 +48,7 @@ class TranslationService:
entry.example_en,
entry.example_cn,
)
return self._placeholder(text, f"[{text}]", "zh", "en")
return self._placeholder(text, "zh", "en")
def _build_response(
self,
@@ -68,17 +68,19 @@ class TranslationService:
"phonetic": phonetic,
"example_en": example_en,
"example_cn": example_cn,
"found": True,
}
def _placeholder(self, source: str, target: str, source_lang: str, target_lang: str) -> dict:
def _placeholder(self, source: str, source_lang: str, target_lang: str) -> dict:
return {
"source_text": source,
"target_text": target,
"target_text": "",
"source_lang": source_lang,
"target_lang": target_lang,
"phonetic": None,
"example_en": f"Example with {target}." if target_lang == "en" else None,
"example_cn": f"包含「{source}」的例句。" if source_lang == "zh" else None,
"example_en": None,
"example_cn": None,
"found": False,
}