#!/usr/bin/env python3
"""把主題表擴成維運日曆，並標出需要法遵檢視的列。"""

from __future__ import annotations

import argparse
import csv
import sys
from pathlib import Path


def main() -> int:
    parser = argparse.ArgumentParser(description="診所內容日曆")
    parser.add_argument("input", type=Path)
    parser.add_argument("-o", "--output", type=Path, required=True)
    args = parser.parse_args()

    with args.input.open(encoding="utf-8-sig", newline="") as handle:
        rows = list(csv.DictReader(handle))
    if not rows:
        print("沒有資料列。", file=sys.stderr)
        return 1

    fieldnames = list(rows[0].keys())
    if "review_note" not in fieldnames:
        fieldnames.append("review_note")
    reviewed = 0
    for row in rows:
        flag = (row.get("needs_legal_review") or "").strip().lower()
        if flag in {"yes", "y", "true", "1"}:
            row["review_note"] = "發佈前由診所負責人或執業醫師檢視，並核對醫療法與網路資訊管理辦法。"
            reviewed += 1
        else:
            row["review_note"] = "仍建議由診所確認事實無誤後再發。"
    args.output.parent.mkdir(parents=True, exist_ok=True)
    with args.output.open("w", encoding="utf-8", newline="") as handle:
        writer = csv.DictWriter(handle, fieldnames=fieldnames)
        writer.writeheader()
        writer.writerows(rows)
    print(f"寫出 {len(rows)} 列到 {args.output}，其中 {reviewed} 列標為需要法遵檢視。")
    return 0


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