"""what came through the repair cafe?

Generated from src/content/docs/reference/levels.md.
Run with the documented Fieldwork release in a writable directory.
Exports are saved there using the filenames shown in the walkthrough.
"""

import pandas as pd
import fieldwork as fw

batches = [
    ("lamp", "fixed", 5),
    ("lamp", "waiting", 2),
    ("lamp", "retired", 1),
    ("kettle", "fixed", 3),
    ("kettle", "waiting", 1),
    ("kettle", "retired", 1),
    ("radio", "fixed", 1),
    ("radio", "waiting", 1),
    ("radio", "retired", 1),
    ("toaster", "fixed", 1),
    ("toaster", "waiting", 1),
    (None, "fixed", 1),
    (None, None, 1),
]
rows = []
for item, outcome, count in batches:
    for _ in range(count):
        rows.append((item, outcome))

intake = pd.DataFrame(
    rows,
    columns=["item", "outcome"],
)

inventory = fw.levels(
    intake, features=["item", "outcome"], max_levels=None
)
print(fw.render_plaintext(inventory))

fixed_lamps = int(
    ((intake["item"] == "lamp") & (intake["outcome"] == "fixed")).sum()
)
print("Fixed lamps:", fixed_lamps)

svg = fw.render_svg(inventory, view="bars")

known = fw.levels(
    intake, features=["item", "outcome"], dropna=True, max_levels=None
)
for feature in known["per_feature"]:
    first = feature["levels"][0]
    print(
        f"{feature['column']}: denominator={feature['evaluated_rows']}, "
        f"excluded={feature['missing_excluded_rows']}, "
        f"leader={first['count']}/{feature['evaluated_rows']} "
        f"({first['share_of_feature']:.1%})"
    )

recurring = fw.levels(
    intake, features=["item"], min_count=3, max_levels=None
)
feature = recurring.to_dict()["per_feature"][0]
print(
    {
        key: feature[key]
        for key in [
            "levels_total",
            "levels_reported",
            "reported_rows",
            "unreported_rows",
        ]
    }
)
print(
    "Reported share:",
    f"{sum(level['share_of_feature'] for level in feature['levels']):.0%}",
)

for top_n, max_levels in [(3, 2), (3, None), (2, None)]:
    limited = fw.levels(
        intake, features=["item"], top_n=top_n, max_levels=max_levels
    )
    feature = limited.to_dict()["per_feature"][0]
    counts = [level["count"] for level in feature["levels"]]
    print(
        f"top_n={top_n}, max_levels={max_levels}: counts={counts}, unreported={feature['unreported_rows']}"
    )

from pathlib import Path

Path("levels.svg").write_text(svg, encoding="utf-8")
