Projeto do Agent Contas ORACLE

This commit is contained in:
2026-08-19 09:35:50 -03:00
commit 950a2bcd33
1366 changed files with 177217 additions and 0 deletions

View File

@@ -0,0 +1,61 @@
import pandas as pd
from app.domain.contas.parsers.bill_processor import PDFBillingProcessor
def test_danfe_payload_preserva_ordem_do_parser_nos_itens_do_plano() -> None:
processor = PDFBillingProcessor(include_danfe=True)
danfe_df = pd.DataFrame(
[
{"desc": "TIM CTRL Redes Sociais 8 0", "value": 35.96},
{"desc": "Serviços de Valor Adicionado Conteúdo", "value": 99.99},
{"desc": "Aya Books Premium", "value": 19.44},
]
)
raw = {
"DANFE-COM": danfe_df,
"Plano": pd.DataFrame(
[
{
"desc": "TIM CTRL Redes Sociais 8 0 (096/POS/SMP)",
"value": 35.96,
}
]
),
}
payload = processor._build_danfe_payload(danfe_df, raw)
item_names = [
item["desc"]
for item in payload["Planos"]["TIM CTRL Redes Sociais 8 0"]
]
assert item_names == [
"TIM CTRL Redes Sociais 8 0",
"Serviços de Valor Adicionado Conteúdo",
"Aya Books Premium",
]
def test_max_mensal_em_itens_eventuais_e_estrategico() -> None:
"""Max Mensal (streaming) em "Itens Eventuais" recebe estrategico=True e
classe=estrategico; o avulso comum mantém classe=avulso."""
processor = PDFBillingProcessor()
df = pd.DataFrame(
[
{"desc": "Serviço Avulso X", "value": 9.90},
{"desc": "Max Mensal", "value": 34.90},
]
)
regular, strategic = processor._split_strategic_records(df, "Itens Eventuais")
assert [r["desc"] for r in strategic] == ["Max Mensal"]
assert strategic[0]["estrategico"] is True
assert [r["desc"] for r in regular] == ["Serviço Avulso X"]
processor._annotate_class(strategic, "Itens Eventuais")
processor._annotate_class(regular, "Itens Eventuais")
assert strategic[0]["classe"] == "estrategico"
assert strategic[0]["verb"] == "falar sobre"
assert regular[0]["classe"] == "avulso"