from __future__ import annotations

from pathlib import Path

from openpyxl import load_workbook
from openpyxl.styles import Alignment


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


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


ROW = [
    CASE_ID,
    "产品管理-产品解决方案",
    "编辑产品基础信息不处理版本并完成后回读",
    "P0",
    "SaaS-admin -> 产品管理 -> 产品解决方案 -> 编辑",
    lines(
        [
            "管理员账号已登录 SaaS-admin",
            "存在待发布产品或页面允许编辑的产品",
            "目标产品操作区存在编辑入口",
        ]
    ),
    "产品描述：自动化编辑描述_{时间戳}",
    lines(
        [
            "进入产品解决方案列表",
            "选择目标产品点击编辑",
            "在步骤1基础信息中修改产品基础信息，例如产品描述",
            "点击下一步",
            "确认进入步骤2版本管理",
            "步骤2不新增、不编辑、不删除应用版本",
            "直接点击完成",
            "返回产品解决方案列表并查询该产品",
            "进入产品管理-操作日志，目标类型选择“产品”，目标编码输入该产品编号，点击查询",
        ]
    ),
    lines(
        [
            "步骤1基础信息保存成功",
            "步骤2版本管理可正常进入",
            "未处理版本时可直接点击完成",
            "列表或详情可回读到更新后的产品基础信息",
            "版本数量不因本次编辑异常变化",
            "操作日志列表存在该产品的成功编辑记录；目标编码与产品编号一致，操作人和提交时间有值",
        ]
    ),
    "这是编辑产品主流程。自动化不需要修改版本，只验证基础信息保存、直接完成、列表回读和操作日志。",
    "用户实走截图展示：编辑产品 -> 步骤1基础信息 -> 下一步 -> 步骤2版本管理不处理 -> 完成。",
]


def main() -> None:
    wb = load_workbook(EXCEL_PATH)
    ws = wb[SHEET_NAME]
    for index in range(2, ws.max_row + 1):
        if ws.cell(index, 1).value != CASE_ID:
            continue
        for column, value in enumerate(ROW, 1):
            ws.cell(index, column).value = value
        for cell in ws[index]:
            cell.alignment = Alignment(vertical="top", wrap_text=True)
        break
    wb.save(EXCEL_PATH)
    print(f"updated={EXCEL_PATH}")
    print(f"case={CASE_ID}")


if __name__ == "__main__":
    main()
