#!/usr/bin/env python3
"""檢查學術草稿是否具備引用、參考文獻與使用揭露段落。不判斷原創性。"""

from __future__ import annotations

import argparse
import re
import sys
from pathlib import Path


def check(text: str) -> list[str]:
    issues: list[str] = []
    if not re.search(r"^##?\s*參考文獻", text, re.M):
        issues.append("找不到「參考文獻」小標")
    if not re.search(r"\[@[^]]+\]|\（[^）]{1,30}年[^）]*\）|\([^)]{1,30}20\d\d[^)]*\)", text):
        issues.append("正文幾乎看不到引用記號（例如 [@作者年] 或（作者, 年份））")
    if not re.search(r"揭露|聲明|使用情形|工具說明", text):
        issues.append("沒有看到工具使用或生成內容的揭露段落，請依學校或期刊規定決定是否要加")
    if re.search(r"lorem ipsum|待補|xxx|TODO", text, re.I):
        issues.append("文中仍有待補或佔位文字")
    return issues


def main() -> int:
    parser = argparse.ArgumentParser(description="學術草稿檢查")
    parser.add_argument("file", type=Path)
    args = parser.parse_args()
    issues = check(args.file.read_text(encoding="utf-8"))
    if issues:
        print("待處理：")
        for item in issues:
            print(f"- {item}")
        return 1
    print("這份清單沒有再找到缺項。這不代表內容已符合學術倫理，仍須自行核對來源與學校規定。")
    return 0


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