Files
life-echo/api/tests/test_background_voice.py
Kevin 2fded6fbd9 refactor(chat): AI-native prompts, remove interview heuristics
- Drop interview_reply_length and utterance_substance; always run stage LLM
  and memory retrieval when enabled; trim Settings fields and .env.example.
- Replace guided/opening prompts with compact fact blocks plus unified
  behavior guidance; slim background_voice and persona to tone hints.
- InterviewAgent uses fixed chat_interview max_tokens/chars/segments.

Also includes stacked work: profile followup/extract path, evaluation rubric
and judge schema updates, transcript SPLIT handling in execution service,
user export markdown split tests, and golden case fixture.
2026-04-06 22:23:46 +08:00

55 lines
1.9 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"""职业文本推断 background_voice干部/军队)。"""
from app.agents.chat.background_voice import (
get_background_voice_narrative_block,
get_background_voice_tone_hint,
infer_background_voice,
normalize_background_voice,
)
def test_infer_military_before_cadre() -> None:
assert infer_background_voice("机关文职干部") == "military"
def test_infer_military_keywords() -> None:
assert infer_background_voice("退伍军人") == "military"
assert infer_background_voice("陆军某部") == "military"
def test_infer_cadre_keywords() -> None:
assert infer_background_voice("公务员") == "cadre"
assert infer_background_voice("某局科长") == "cadre"
def test_infer_default() -> None:
assert infer_background_voice(None) == "default"
assert infer_background_voice("") == "default"
assert infer_background_voice("中学教师") == "default"
def test_normalize_accepts_enum_strings() -> None:
assert normalize_background_voice("military") == "military"
assert normalize_background_voice("cadre") == "cadre"
def test_narrative_editor_system_prompt_appends_voice() -> None:
from app.agents.memoir.prompts import get_narrative_editor_system_prompt
base = get_narrative_editor_system_prompt("default")
mil = get_narrative_editor_system_prompt("military")
assert len(mil) > len(base)
assert "背景文体(军队" in mil
def test_cadre_military_tone_hints_and_narrative_retirement_context() -> None:
chat_c = get_background_voice_tone_hint("cadre")
chat_m = get_background_voice_tone_hint("military")
assert chat_c and chat_m
assert "稳重" in chat_c or "分寸" in chat_c
assert "简洁" in chat_m or "利落" in chat_m
narr_c = get_background_voice_narrative_block("cadre")
narr_m = get_background_voice_narrative_block("military")
assert "退休" in narr_c
assert "退役" in narr_m