Release v4928.1.4.2 stable
This commit is contained in:
124
tests/test_v4926_1_email_identity_quality.py
Normal file
124
tests/test_v4926_1_email_identity_quality.py
Normal file
@@ -0,0 +1,124 @@
|
||||
from app.email_identity_extraction_service import extract_email_identity
|
||||
|
||||
|
||||
DIETIMPORT_EMAIL = """
|
||||
Boa tarde,
|
||||
|
||||
Conseguiria enviar-me a fatura em formato digital, referente à nossa última encomenda?
|
||||
|
||||
Obrigado.
|
||||
|
||||
Com os melhores cumprimentos,
|
||||
|
||||
Filipe Delgado
|
||||
|
||||
Engenheiro Civil
|
||||
|
||||
Responsável
|
||||
Departamento de Manutenção
|
||||
|
||||
Rua Dr. Costa Sacadura N.º4 1800-176 Lisboa
|
||||
Telem: +351 96 873 88 56 (Chamada para Rede Móvel Nacional)
|
||||
Tel: +351 21 159 01 95 (Chamada para Rede Fixa Nacional)
|
||||
|
||||
AVISO
|
||||
Esta mensagem (incluindo quaisquer anexos) pode conter informação confidencial para uso exclusivo do destinatário. Se não for o destinatário pretendido não deverá usar, distribuir ou copiar este e-mail. Se recebeu esta mensagem por engano por favor informe o emissor e elimine-a imediatamente. As opiniões emitidas nesta mensagem não são necessariamente as da Dietimport S.A..
|
||||
|
||||
Obrigado.
|
||||
"""
|
||||
|
||||
|
||||
def test_regex_identity_ignores_valediction_as_person_name():
|
||||
data = extract_email_identity(
|
||||
DIETIMPORT_EMAIL,
|
||||
email="filipedelgado@dietimport.pt",
|
||||
use_llm=False,
|
||||
)
|
||||
assert data["person_name"] == "Filipe Delgado"
|
||||
assert data["person_name"] != "Com os melhores cumprimentos,"
|
||||
|
||||
|
||||
def test_regex_identity_keeps_company_name_not_full_disclaimer():
|
||||
data = extract_email_identity(
|
||||
DIETIMPORT_EMAIL,
|
||||
email="filipedelgado@dietimport.pt",
|
||||
use_llm=False,
|
||||
)
|
||||
assert data["company_mentions"] == ["Dietimport S.A"]
|
||||
assert all("informação confidencial" not in company for company in data["company_mentions"])
|
||||
assert all(len(company) < 80 for company in data["company_mentions"])
|
||||
|
||||
|
||||
def test_regex_identity_address_stops_before_phone_labels():
|
||||
data = extract_email_identity(
|
||||
DIETIMPORT_EMAIL,
|
||||
email="filipedelgado@dietimport.pt",
|
||||
use_llm=False,
|
||||
)
|
||||
assert data["address"] == "Rua Dr. Costa Sacadura N.º4 1800-176 Lisboa"
|
||||
assert "Telem" not in data["address"]
|
||||
assert "+351 96 873 88 56" in data["phones"]
|
||||
assert data["domain"] == "dietimport.pt"
|
||||
|
||||
|
||||
def test_identity_cleanup_removes_legal_paragraph_mentions(monkeypatch):
|
||||
from app.email_identity_extraction_service import merge_identity
|
||||
|
||||
regex_data = {
|
||||
"person_name": "",
|
||||
"company_mentions": [
|
||||
"dos nesta comunicação estão incorporados num ficheiro cujo responsável é a SOPAC, S.A",
|
||||
"obter a confirmação sobre se a SOPAC, S.A",
|
||||
],
|
||||
"address": "",
|
||||
"phones": [],
|
||||
"websites": [],
|
||||
"email": "info@adp-fertilizantes.pt",
|
||||
"domain": "adp-fertilizantes.pt",
|
||||
"confidence": 0.9,
|
||||
"evidence": [],
|
||||
"method": "regex",
|
||||
}
|
||||
data = merge_identity(regex_data, None)
|
||||
assert data["company_mentions"] == ["SOPAC, S.A"]
|
||||
assert all("ficheiro" not in company for company in data["company_mentions"])
|
||||
|
||||
|
||||
def test_identity_cleanup_removes_cjk_noise_from_person_name():
|
||||
from app.email_identity_extraction_service import merge_identity
|
||||
|
||||
regex_data = {
|
||||
"person_name": "Luis Roch游戏副本a",
|
||||
"company_mentions": [],
|
||||
"address": "",
|
||||
"phones": [],
|
||||
"websites": [],
|
||||
"email": "luis.rocha@coimpack.pt",
|
||||
"domain": "coimpack.pt",
|
||||
"confidence": 0.85,
|
||||
"evidence": [],
|
||||
"method": "regex",
|
||||
}
|
||||
data = merge_identity(regex_data, None)
|
||||
assert data["person_name"] == "Luis Rocha"
|
||||
assert data["confidence"] <= 0.45
|
||||
|
||||
|
||||
def test_identity_cleanup_rejects_mobile_footer_as_person_name():
|
||||
from app.email_identity_extraction_service import merge_identity
|
||||
|
||||
regex_data = {
|
||||
"person_name": "Enviado do meu Galaxy",
|
||||
"company_mentions": [],
|
||||
"address": "",
|
||||
"phones": [],
|
||||
"websites": [],
|
||||
"email": "paulo.campelo@sapo.pt",
|
||||
"domain": "sapo.pt",
|
||||
"confidence": 0.7,
|
||||
"evidence": [],
|
||||
"method": "regex",
|
||||
}
|
||||
data = merge_identity(regex_data, None)
|
||||
assert data["person_name"] == ""
|
||||
assert data["confidence"] <= 0.45
|
||||
Reference in New Issue
Block a user