from __future__ import annotations

from pathlib import Path

from openpyxl import load_workbook


ROOT = Path(__file__).resolve().parents[1]
EXCEL_PATH = ROOT / "测试用例" / "SaaS_订阅邀请登录_测试功能点.xlsx"
SHEET_NAME = "流程用例-产品解决方案"


def lines(items: list[str]) -> str:
    return "\n".join(f"{index}. {item}" for index, item in enumerate(items, 1))


ROWS = [
    [
        "PRODSOL-FLOW-010",
        "产品管理-产品解决方案",
        "新建产品填写基础信息并进入版本管理",
        "P0",
        "SaaS-admin -> 产品管理 -> 产品解决方案 -> 新建产品",
        lines(
            [
                "管理员账号已登录 SaaS-admin",
                "当前用户有新建产品权限",
                "已进入产品解决方案列表",
            ]
        ),
        "产品名称：自动化产品_{时间戳}；提供方类型：平台；Logo：测试图片；产品描述：自动化产品描述；允许购买商户类型：企业商户、个体工商户、个人用户；续费提醒：到期提醒；提醒时间：到期前30天、14天、7天、3天、1天、当天、到期后1天、到期后3天",
        lines(
            [
                "点击右上角“新建产品”",
                "在创建产品弹窗的步骤1基础信息中填写产品名称",
                "选择提供方类型",
                "上传产品 Logo",
                "填写产品描述",
                "选择允许购买商户类型",
                "选择续费提醒为到期提醒",
                "选择提醒时间",
                "点击下一步",
            ]
        ),
        lines(
            [
                "基础信息保存成功，页面出现“基础信息已保存”提示",
                "创建产品弹窗切换到步骤2版本管理",
                "版本管理表格展示排序、版本名称、开通方式、状态、基准月份、成员限制、试用天数、应用数、操作等列",
                "新建产品初始版本列表可为空",
                "步骤2展示“新增版本”按钮",
            ]
        ),
        "这条是新建产品链路的第一段。自动化重点断言 Toast 和步骤切换，不需要逐个做字段边界校验。",
        "用户截图展示创建产品两步：步骤1基础信息、步骤2版本管理；点击下一步后提示基础信息已保存。",
    ],
    [
        "PRODSOL-FLOW-011",
        "产品管理-产品解决方案",
        "新建产品时新增订阅版本并保存",
        "P0",
        "SaaS-admin -> 产品管理 -> 产品解决方案 -> 新建产品 -> 版本管理 -> 新增版本",
        lines(
            [
                "管理员账号已登录 SaaS-admin",
                "已在创建产品弹窗完成步骤1基础信息",
                "当前位于步骤2版本管理",
            ]
        ),
        "版本名称：自动化订阅版本_{时间戳}；开通方式：订阅开通；状态：启用；基准月份：499；成员限制：80；免费试用天数：0；订阅时长：1/6/12个月；折扣：100/90/80",
        lines(
            [
                "在步骤2版本管理中点击“新增版本”",
                "在添加订阅版本弹窗填写版本名称",
                "按页面默认或需求选择开通方式",
                "选择状态",
                "填写版本描述",
                "填写基准月份、成员限制、免费试用天数",
                "确认订阅期限与折扣列表",
                "按页面能力选择或暂不选择应用版本配置",
                "点击保存版本",
            ]
        ),
        lines(
            [
                "添加订阅版本弹窗保存成功并关闭，或版本被加入步骤2版本列表",
                "版本列表出现新建版本",
                "版本名称、开通方式、状态、基准月份、成员限制、试用天数、应用数等信息可回读",
                "点击完成后返回产品解决方案列表",
                "列表可查询到新建产品，版本数量随新增版本更新",
            ]
        ),
        "自动化先覆盖一条可保存版本的主流程。应用版本配置若当前无可选应用，先按页面实际表现记录为空，后续再补应用选择场景。",
        "用户截图展示添加订阅版本弹窗字段：版本名称、版本图标、开通方式、状态、版本描述、基准月份、成员限制、免费试用天数、订阅期限与折扣、应用版本配置、保存版本。",
    ],
]


def main() -> None:
    wb = load_workbook(EXCEL_PATH)
    ws = wb[SHEET_NAME]
    existing = {row[0].value for row in ws.iter_rows(min_row=2, max_col=1)}
    for row in ROWS:
        if row[0] not in existing:
            ws.append(row)
    wb.save(EXCEL_PATH)
    print(f"updated={EXCEL_PATH}")
    print(f"sheet={SHEET_NAME}")
    print(f"cases={len(ROWS)}")


if __name__ == "__main__":
    main()
