2026-03-31 23:55:26 +08:00
|
|
|
"""口述规则归一与 memoir 入口行为。"""
|
|
|
|
|
|
|
|
|
|
from unittest.mock import patch
|
|
|
|
|
|
2026-04-01 11:49:33 +08:00
|
|
|
from app.core.text_normalize import apply_oral_rules
|
|
|
|
|
from app.features.memoir.oral_normalize import normalize_oral_for_memoir
|
2026-03-31 23:55:26 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
def test_apply_rules_mei_kanshang_wo() -> None:
|
2026-04-01 11:49:33 +08:00
|
|
|
assert "没看上我" in apply_oral_rules("我去试镜了 美看上我 张伟")
|
2026-03-31 23:55:26 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
def test_apply_rules_mei_kanshang_ni() -> None:
|
2026-04-01 11:49:33 +08:00
|
|
|
assert apply_oral_rules("美看上你") == "没看上你"
|
2026-03-31 23:55:26 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
def test_apply_rules_no_false_positive_rong() -> None:
|
|
|
|
|
"""「美容」等不应被误替换。"""
|
|
|
|
|
s = "我去了解美容项目"
|
2026-04-01 11:49:33 +08:00
|
|
|
assert apply_oral_rules(s) == s
|
2026-03-31 23:55:26 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
def test_normalize_respects_global_off() -> None:
|
|
|
|
|
raw = "美看上我"
|
|
|
|
|
with patch("app.features.memoir.oral_normalize.settings") as m:
|
|
|
|
|
m.memoir_oral_normalize_enabled = False
|
|
|
|
|
m.memoir_oral_normalize_mode = "rules"
|
|
|
|
|
assert normalize_oral_for_memoir(raw, llm=None) == raw
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def test_normalize_rules_mode_no_llm() -> None:
|
|
|
|
|
raw = "美看上我"
|
|
|
|
|
with patch("app.features.memoir.oral_normalize.settings") as m:
|
|
|
|
|
m.memoir_oral_normalize_enabled = True
|
|
|
|
|
m.memoir_oral_normalize_mode = "rules"
|
|
|
|
|
m.memoir_oral_normalize_llm_max_tokens = 512
|
|
|
|
|
m.memoir_oral_normalize_llm_max_input_chars = 8000
|
|
|
|
|
assert normalize_oral_for_memoir(raw, llm=None) == "没看上我"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def test_normalize_mode_off_string() -> None:
|
|
|
|
|
raw = "美看上我"
|
|
|
|
|
with patch("app.features.memoir.oral_normalize.settings") as m:
|
|
|
|
|
m.memoir_oral_normalize_enabled = True
|
|
|
|
|
m.memoir_oral_normalize_mode = "off"
|
|
|
|
|
m.memoir_oral_normalize_llm_max_tokens = 512
|
|
|
|
|
m.memoir_oral_normalize_llm_max_input_chars = 8000
|
|
|
|
|
assert normalize_oral_for_memoir(raw, llm=None) == raw
|