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))


MERGED_ROW = [
    "PRODSOL-FLOW-010",
    "产品管理-产品解决方案",
    "新建产品并新增订阅版本后列表回读",
    "P0",
    "SaaS-admin -> 产品管理 -> 产品解决方案 -> 新建产品",
    lines(
        [
            "管理员账号已登录 SaaS-admin",
            "当前用户有新建产品权限",
            "已进入产品解决方案列表",
        ]
    ),
    "产品名称：自动化产品_{时间戳}；提供方类型：平台；Logo：测试图片；产品描述：自动化产品描述；续费提醒：到期提醒；版本名称：自动化订阅版本_{时间戳}；开通方式：订阅开通；状态：启用；基准月份：499；成员限制：80；免费试用天数：0；订阅时长：1/6/12个月；折扣：100/90/80",
    lines(
        [
            "点击右上角“新建产品”",
            "在创建产品弹窗步骤1基础信息中填写产品名称",
            "选择提供方类型",
            "上传产品 Logo",
            "填写产品描述",
            "选择允许购买商户类型",
            "选择续费提醒和提醒时间",
            "点击下一步",
            "确认页面提示基础信息已保存，并进入步骤2版本管理",
            "点击“新增版本”",
            "在添加订阅版本弹窗填写版本名称、开通方式、状态、版本描述、基准月份、成员限制、免费试用天数",
            "确认订阅期限与折扣列表",
            "按页面能力选择或暂不选择应用版本配置",
            "点击保存版本",
            "回到步骤2版本管理列表，确认新版本出现",
            "点击完成",
            "返回产品解决方案列表并查询新建产品",
        ]
    ),
    lines(
        [
            "基础信息保存成功，并从步骤1切换到步骤2版本管理",
            "订阅版本保存成功，版本列表出现新建版本",
            "版本名称、开通方式、状态、基准月份、成员限制、试用天数、应用数等信息可回读",
            "点击完成后返回产品解决方案列表",
            "列表可查询到新建产品",
            "新建产品状态为待发布",
            "产品编号自动生成",
            "版本数量随新增版本更新",
        ]
    ),
    "作为完整新增产品主流程生成自动化脚本。应用版本配置如果当前无可选应用，先按页面实际表现记录为空，后续单独补应用选择分支。",
    "用户实走截图展示：创建产品步骤1基础信息 -> 下一步提示基础信息已保存 -> 步骤2版本管理 -> 新增版本 -> 添加订阅版本保存。",
]


def main() -> None:
    wb = load_workbook(EXCEL_PATH)
    ws = wb[SHEET_NAME]
    target_row = None
    rows_to_delete: list[int] = []
    for index in range(2, ws.max_row + 1):
        case_id = ws.cell(index, 1).value
        if case_id == "PRODSOL-FLOW-010":
            target_row = index
        elif case_id == "PRODSOL-FLOW-011":
            rows_to_delete.append(index)

    if target_row is None:
        ws.append(MERGED_ROW)
    else:
        for column, value in enumerate(MERGED_ROW, 1):
            ws.cell(target_row, column).value = value

    for index in sorted(rows_to_delete, reverse=True):
        ws.delete_rows(index, 1)

    wb.save(EXCEL_PATH)
    print(f"updated={EXCEL_PATH}")
    print("merged=PRODSOL-FLOW-010")
    print("removed=PRODSOL-FLOW-011")


if __name__ == "__main__":
    main()
