You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
30 lines
1.0 KiB
Python
30 lines
1.0 KiB
Python
# backend/tests/test_mail_ai.py — phase-16+: 메일 시드 제거 → 직접 생성
|
|
from app.models import Email
|
|
from app.services.mail_ai import analyze_email
|
|
from tests._factories import make_email
|
|
from tests._fake_llm import FakeLLMProvider
|
|
|
|
|
|
def test_existing_ai_is_reused(client, session):
|
|
s, _ = session
|
|
e = make_email(s, id="m1", subject="온보딩 시안 v3", ai_json={"summary": "온보딩 시안 v3 요약"})
|
|
out = analyze_email(s, e, FakeLLMProvider())
|
|
assert out["summary"].startswith("온보딩 시안 v3") # 기존 ai_json 재사용(LLM 미호출)
|
|
|
|
|
|
def test_new_email_analyzed_by_llm(client, session):
|
|
s, _ = session
|
|
e = Email(
|
|
id="mX",
|
|
account="work",
|
|
from_key="hyunwoo",
|
|
subject="[중요] 14시 미팅 부탁",
|
|
body=["14시에 봬요"],
|
|
ai_json={},
|
|
)
|
|
s.add(e)
|
|
s.commit()
|
|
out = analyze_email(s, e, FakeLLMProvider()) # 실 LLM 대역(결정적)
|
|
assert out["priority"] == "높음" # [중요]
|
|
assert len(out["events"]) == 1 # 14시 → event 후보
|