# -*- coding: utf-8 -*-
"""学習スクリプト: assessable=1 の行で線形回帰を学習し pipeline/models/ に保存。

使い方:
    python train_model.py                       # 既定の training_dataset.csv で学習
    python train_model.py --input <csv>         # 入力CSVを指定
"""
from __future__ import annotations
import argparse
from pathlib import Path

import soup_scoring as S

HERE = Path(__file__).resolve().parent
ROOT = HERE.parents[1]
DEFAULT_INPUT = ROOT / "local_batch_api" / "output_full" / "training_dataset.csv"
MODEL_DIR = HERE / "models"


def main() -> None:
    ap = argparse.ArgumentParser()
    ap.add_argument("--input", default=str(DEFAULT_INPUT))
    ap.add_argument("--model-dir", default=str(MODEL_DIR))
    args = ap.parse_args()

    meta = S.train(args.input, args.model_dir)
    print("学習完了 ->", args.model_dir)
    print(f"  全有効件数: {meta['n_total']}  / 学習対象(assessable=1): {meta['n_scoreable']}")
    for target, info in meta["models"].items():
        print(f"  {target}: {info['model']} / feature_set={info['feature_set']} -> {info['path']}")


if __name__ == "__main__":
    main()
