# -*- coding: utf-8 -*-
"""学習スクリプト（開発システム）。

assessable=1 の行で線形回帰を学習し、学習済みモデルを models_output/ に保存する。
保存したモデルは AI利用システム/models へコピーして使う（手順は README 参照）。

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

HERE = Path(__file__).resolve().parent
ROOT = HERE.parent  # プロジェクトルート
sys.path.insert(0, str(HERE / "core"))
import soup_scoring as S  # noqa: E402

DEFAULT_INPUT = ROOT / "local_batch_api" / "output_full" / "training_dataset.csv"
MODEL_DIR = HERE / "models_output"


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']}")
    print()
    print("※ 利用システムへ反映するには models_output/ の *.pkl と metadata.json を")
    print("   AI利用システム_完成_20260619/models/ へコピーしてください。")


if __name__ == "__main__":
    main()
