"""Export source-to-canonical attribute mapping candidates.

CLI:
    python -m app.jobs.export_attribute_mapping_review --output attribute_mapping_review.csv
"""

from __future__ import annotations

import argparse
import csv
import sys


def run_export_attribute_mapping_review(output_path: str, *, include_magento: bool = True) -> dict:
    from db.attribute_mapping import build_attribute_mapping_review
    from db.session import get_session

    with get_session() as session:
        rows = build_attribute_mapping_review(session, include_magento=include_magento)

    fieldnames = [
        "family_key",
        "source_system",
        "source_label",
        "source_column_key",
        "source_column_name",
        "suggested_canonical_code",
        "suggested_target_scope",
        "suggested_purpose",
        "suggested_priority",
        "suggested_transform_rule",
        "sku_count",
        "sample_values",
        "mapping_status",
        "current_canonical_codes",
        "current_target_scopes",
        "value_strategy",
        "recommendation",
    ]
    with open(output_path, "w", newline="", encoding="utf-8") as handle:
        writer = csv.DictWriter(handle, fieldnames=fieldnames)
        writer.writeheader()
        writer.writerows(rows)

    return {"status": "ok", "output": output_path, "rows": len(rows)}


def main() -> int:
    parser = argparse.ArgumentParser(description="Export attribute mapping review CSV")
    parser.add_argument("--output", required=True, help="Output CSV path")
    parser.add_argument("--exclude-magento", action="store_true", help="Exclude Magento source attributes")
    args = parser.parse_args()

    result = run_export_attribute_mapping_review(args.output, include_magento=not args.exclude_magento)
    print(f"Attribute mapping review export complete: output={result['output']} rows={result['rows']}")
    return 0


if __name__ == "__main__":
    sys.exit(main())
