#!/usr/bin/env python3
from __future__ import annotations

import argparse
import json
from pathlib import Path


def bullets(values: list[str]) -> str:
    return "\n".join(f"- {value}" for value in values)


def main() -> int:
    parser = argparse.ArgumentParser(description="Build three sanitized NotebookLM Markdown sources for one SKU.")
    parser.add_argument("--manifest", required=True, type=Path)
    parser.add_argument("--output-dir", required=True, type=Path)
    args = parser.parse_args()
    data = json.loads(args.manifest.read_text(encoding="utf-8"))
    args.output_dir.mkdir(parents=True, exist_ok=True)
    sku = data["sku"]
    flow = " → ".join(data["main_flow"])

    source1 = f"""# {sku} {data['name']}：产品定位与主流程

## 一句话产品

{data['one_liner']}

## 购买人

{data['buyer']}

## 主要购买理由

{data['primary_buying_point']}

## 适用客户

{bullets(data['suitable_for'])}

## 标准组合

{bullets(data['standard_combo'])}

## 唯一主流程

{flow}
"""
    module_text = []
    for module in data["core_modules"]:
        module_text.append(f"### {module['name']}\n\n{bullets(module['points'])}")
    source2 = f"""# {sku} {data['name']}：核心功能与客户价值

## 核心功能

{chr(10).join(module_text)}

## 客户价值

{bullets(data['customer_values'])}
"""
    forbidden = "、".join(data["forbidden_terms"])
    source3 = f"""# {sku} {data['name']}：产品边界与信息图要求

## 产品边界

{bullets(data['boundaries'])}

## 信息图要求

- 标题：{sku}{data['name']}主流程。
- 横向专业信息图，只画以下步骤：{flow}。
- 步骤数量固定为{len(data['main_flow'])}，不得新增、合并或改序。
- 禁止出现：{forbidden}。
- 只讲标准产品，不展示客户项目名称、账号、密码、安装包和实施过程。

## 生成重点

{data['infographic_focus']}
"""
    files = {
        f"01-{sku}产品定位与主流程.md": source1,
        f"02-{sku}核心功能与客户价值.md": source2,
        f"03-{sku}产品边界与信息图要求.md": source3,
    }
    for name, content in files.items():
        (args.output_dir / name).write_text(content, encoding="utf-8")
    print(json.dumps({"files": [str(args.output_dir / name) for name in files]}, ensure_ascii=False))
    return 0


if __name__ == "__main__":
    raise SystemExit(main())
