feat: 原文中文对照(逐句)— 高亮句同色同序号对位
- /api/translate 增加逐句模式(sentences): 前端拆句(en 为原文精确文本)→ 模型逐句翻译, 数量/顺序校验复用 _count_check(不一致自动重试);响应 en 原样回填保证对位可靠 - 左栏原文区新增「原文中文对照 →」: 逐句中文展示,命中批注 evidence 的句子 与原文同色(note-rhetoric/repeat/growth/structure)+ 同序号(sup), 点击对照行可联动高亮原文句与批注卡片 - 对照缓存按段保存并持久化(原文变化/换文书自动失效清空) - 测试: 新增逐句模式 2 个 hermetic 测试(33 passed) - 浏览器实测 18/18 通过(含逐句渲染/高亮对位/点击联动/刷新持久化)
This commit is contained in:
+16
@@ -322,6 +322,22 @@ def build_translate_prompt(text: str) -> tuple[str, str]:
|
||||
return system, user
|
||||
|
||||
|
||||
def build_translate_sentences_prompt(sentences: list[str]) -> tuple[str, str]:
|
||||
"""逐句中文对照(原文区):句子由前端拆分,模型只负责逐句翻译,
|
||||
数量与顺序必须一致 —— 前端据此把「需要改写的高亮句」在中文对照里同色对位。"""
|
||||
numbered = "\n".join(f"{i + 1}. {s}" for i, s in enumerate(sentences))
|
||||
system = """你是 Human Voice Rewrite 工作流的中文对照翻译器。
|
||||
|
||||
用户给出的是一段英文文书的逐句拆分(编号)。要求:
|
||||
- 逐句翻译成自然中文,与输入一一对应:数量一致、顺序不变;每句只翻这一句,不合并、不遗漏。
|
||||
- 忠实优先:保留细节、语气与情绪强度;不润色、不省略、不补写原文没有的信息。
|
||||
- 不做评价、不建议、不加注释。
|
||||
- 只输出 JSON:{"sentences": [{"zh": ""}]}(按输入顺序,数量与输入完全一致)"""
|
||||
|
||||
user = f"英文句子:\n{numbered}\n\n请输出 JSON。"
|
||||
return system, user
|
||||
|
||||
|
||||
def _as_text(value, sep=";") -> str:
|
||||
"""模型偶发把字符串字段返回成数组(如 ai_focus 给了 1–3 类问题的列表,
|
||||
2026-08-21 用户实测 4 段全中)——统一规整为字符串,避免 pydantic
|
||||
|
||||
Reference in New Issue
Block a user