初始化提交
This commit is contained in:
commit
887c1f449e
963 files changed
+166869
No files matched your search
@@ -0,0 +1,66 @@
|
||||
"""小周天每轮反思抽取纯函数测试。"""
|
||||
|
||||
from app.modules.extraction.extract import MemoryCandidateDraft
|
||||
from app.modules.reflection.extract import parse_reflection
|
||||
|
||||
|
||||
def test_parse_standard() -> None:
|
||||
raw = (
|
||||
'{"memories":[{"type":"preference","title":"喜欢简洁","content":"用户偏好简洁",'
|
||||
'"importance":0.8,"sensitivity":"low","confidence":0.7,"reason":"多次提及"}],'
|
||||
'"reflection":"本轮应更主动确认用户意图。"}'
|
||||
)
|
||||
memories, reflection = parse_reflection(raw)
|
||||
assert len(memories) == 1
|
||||
assert memories[0].title == "喜欢简洁"
|
||||
assert isinstance(memories[0], MemoryCandidateDraft)
|
||||
assert reflection == "本轮应更主动确认用户意图。"
|
||||
|
||||
|
||||
def test_parse_markdown_block() -> None:
|
||||
raw = '```json\n{"memories":[],"reflection":"反思文本"}\n```'
|
||||
memories, reflection = parse_reflection(raw)
|
||||
assert memories == []
|
||||
assert reflection == "反思文本"
|
||||
|
||||
|
||||
def test_parse_invalid_returns_empty() -> None:
|
||||
assert parse_reflection("不是JSON") == ([], "")
|
||||
assert parse_reflection("[]") == ([], "")
|
||||
|
||||
|
||||
def test_missing_reflection_returns_empty_string() -> None:
|
||||
memories, reflection = parse_reflection('{"memories":[]}')
|
||||
assert memories == []
|
||||
assert reflection == ""
|
||||
|
||||
|
||||
def test_missing_memories_returns_empty_list() -> None:
|
||||
memories, reflection = parse_reflection('{"reflection":"只有反思"}')
|
||||
assert memories == []
|
||||
assert reflection == "只有反思"
|
||||
|
||||
|
||||
def test_memory_safe_defaults() -> None:
|
||||
raw = '{"memories":[{"title":"t","content":"c"}],"reflection":"r"}'
|
||||
m = parse_reflection(raw)[0][0]
|
||||
assert m.sensitivity == "low"
|
||||
assert m.confidence == 0.5
|
||||
assert m.importance == 0.5
|
||||
|
||||
|
||||
def test_skip_memory_missing_title_or_content() -> None:
|
||||
raw = (
|
||||
'{"memories":[{"title":"t"},{"content":"c"},{"title":"t","content":"c"}],"reflection":"r"}'
|
||||
)
|
||||
assert len(parse_reflection(raw)[0]) == 1
|
||||
|
||||
|
||||
def test_clamp_values() -> None:
|
||||
raw = '{"memories":[{"title":"t","content":"c","importance":1.5}],"reflection":"r"}'
|
||||
assert parse_reflection(raw)[0][0].importance == 1.0
|
||||
|
||||
|
||||
def test_reflection_strips_whitespace() -> None:
|
||||
raw = '{"memories":[],"reflection":" 带空格的反思 "}'
|
||||
assert parse_reflection(raw)[1] == "带空格的反思"
|
||||
@@ -0,0 +1,21 @@
|
||||
"""小周天反思 prompt 构建纯函数测试。"""
|
||||
|
||||
from app.modules.reflection.prompts import build_reflection_messages
|
||||
|
||||
|
||||
def test_messages_return_system_user_pair() -> None:
|
||||
system, user = build_reflection_messages("你好", "你好,我是魂镜")
|
||||
assert isinstance(system, str) and isinstance(user, str)
|
||||
assert system and user
|
||||
|
||||
|
||||
def test_system_describes_memories_and_reflection() -> None:
|
||||
system, _ = build_reflection_messages("u", "a")
|
||||
for token in ("memories", "reflection", "importance", "sensitivity"):
|
||||
assert token in system
|
||||
|
||||
|
||||
def test_user_includes_dialogue() -> None:
|
||||
_, user = build_reflection_messages("用户说的话", "助手的回复")
|
||||
assert "用户说的话" in user
|
||||
assert "助手的回复" in user
|
||||
Reference in new issue
Block a user