#!/usr/bin/env python3
"""Emit one structured log record and verify its redaction.

The script prints a stable view of the record so learners can compare output
across machines. The formatter's full JSON line also contains dynamic fields
such as timestamp, host, process ID, and source line.
"""

from __future__ import annotations

import io
import json
import logging

from mgf.common import bootstrap
from mgf.common.observability import JsonFormatter, Redactor, get_logger


FAKE_PASSWORD = "example-only-password"
FAKE_BEARER = "Bearer demo-token-123456"


def main() -> None:
    stream = io.StringIO()
    handler = logging.StreamHandler(stream)
    handler.setFormatter(JsonFormatter(redactor=Redactor.default()))

    with bootstrap(
        app_name="package-lesson",
        app_version="1.0",
        setup_logging=False,
    ):
        log = get_logger("lesson.checkout")
        log.handlers.clear()
        log.addHandler(handler)
        log.propagate = False
        log.setLevel(logging.INFO)

        log.info(
            "checkout prepared",
            extra={
                "order_id": "order-demo-104",
                "profile": {
                    "tier": "training",
                    "password": FAKE_PASSWORD,
                },
                "upstream_note": f"using {FAKE_BEARER} now",
            },
        )
        handler.flush()

    raw_line = stream.getvalue().strip()
    record = json.loads(raw_line)
    stable_view = {
        "app": record["app"],
        "app_version": record["app_version"],
        "level": record["level"],
        "logger": record["logger"],
        "msg": record["msg"],
        "order_id": record["order_id"],
        "profile": record["profile"],
        "upstream_note": record["upstream_note"],
    }

    expected = {
        "app": "package-lesson",
        "app_version": "1.0",
        "level": "INFO",
        "logger": "lesson.checkout",
        "msg": "checkout prepared",
        "order_id": "order-demo-104",
        "profile": {
            "password": "[REDACTED]",
            "tier": "training",
        },
        "upstream_note": "using [REDACTED] now",
    }
    assert stable_view == expected
    assert FAKE_PASSWORD not in raw_line
    assert FAKE_BEARER not in raw_line

    print(json.dumps(stable_view, indent=2, sort_keys=True))


if __name__ == "__main__":
    main()
