58 lines
2.5 KiB
Python
58 lines
2.5 KiB
Python
from pathlib import Path
|
|
|
|
ROOT = Path(__file__).resolve().parents[1]
|
|
|
|
|
|
def read(path: str) -> str:
|
|
return (ROOT / path).read_text(encoding="utf-8")
|
|
|
|
|
|
def test_v4925_has_autonomous_fiscal_enrichment_service_and_schema():
|
|
service = read("app/fiscal_enrichment_service.py")
|
|
assert "def ensure_fiscal_enrichment_schema" in service
|
|
assert "external_company_cache" in service
|
|
assert "fiscal_customer_suggestions" in service
|
|
assert "fiscal_enrichment_runs" in service
|
|
assert "def enrich_open_opportunities" in service
|
|
assert "def enrich_opportunity" in service
|
|
assert "contactos/search" in service
|
|
assert "empresas/domain" in service
|
|
assert "empresas/nif" in service
|
|
assert "POST" in service or "_http_json(\"POST\"" in service or "batch" in service
|
|
|
|
|
|
def test_v4925_pipeline_runs_enrichment_before_reconciliation_sync():
|
|
sync = read("app/external_reconciliation_sync.py")
|
|
block = sync.split("async def sync_all_external_reconciliation_candidates", 1)[1]
|
|
assert "enrich_open_opportunities" in block
|
|
assert block.index("enrich_open_opportunities") < block.index("sync_external_fiscal_customers_for_reconciliation")
|
|
assert "enrichment_auto_applied" in block
|
|
assert "enrichment_suggested" in block
|
|
|
|
|
|
def test_v4925_opportunity_creation_triggers_best_effort_enrichment():
|
|
service = read("app/opportunity_service.py")
|
|
block = service.split("def upsert_opportunity_for_task", 1)[1].split("def advance_opportunity_after_task_done", 1)[0]
|
|
assert "from app.fiscal_enrichment_service import enrich_opportunity" in block
|
|
assert "enrich_opportunity(opportunity_id, apply_safe=True)" in block
|
|
assert "except Exception" in block
|
|
|
|
|
|
def test_v4925_ui_exposes_enrichment_actions():
|
|
opp = read("app/admin_ui/pages/opportunities.py")
|
|
recon = read("app/admin_ui/pages/reconciliation.py")
|
|
assert "/opportunities/{opportunity_id}/fiscal-enrich" in opp
|
|
assert "/fiscal-suggestions/{suggestion_id}/accept" in opp
|
|
assert "Sugestões fiscais" in opp
|
|
assert "/reconciliation/enrich-fiscal" in recon
|
|
assert "Enriquecer oportunidades" in recon
|
|
|
|
|
|
def test_v4925_scripts_and_settings_exist():
|
|
assert (ROOT / "scripts/enrich_fiscal_customers.py").exists()
|
|
assert (ROOT / "scripts/run_reconciliation_pipeline.py").exists()
|
|
config = read("app/config.py")
|
|
assert "external_company_lookup_enabled" in config
|
|
assert "external_company_lookup_base_url" in config
|
|
assert "external_company_lookup_api_key" in config
|