"""Shared fixtures/helpers for engine + parity tests."""

import io
import json
import base64
from pathlib import Path

import pandas as pd

SERVICE_ROOT = Path(__file__).resolve().parents[1]
REPO_ROOT = SERVICE_ROOT.parents[1]
EXAMPLES_DIR = REPO_ROOT / "docs" / "contracts" / "recon_rule_examples"


def xlsx_b64(df: pd.DataFrame) -> str:
    buf = io.BytesIO()
    df.to_excel(buf, index=False)
    return base64.b64encode(buf.getvalue()).decode()


def csv_b64(df: pd.DataFrame) -> str:
    return base64.b64encode(df.to_csv(index=False).encode()).decode()


def load_example(filename: str) -> dict:
    """Load a real contract-example document (template or rule set) so tests
    exercise the exact artifacts that will be seeded in R6."""
    return json.loads((EXAMPLES_DIR / filename).read_text(encoding="utf-8"))
