文件预览

cmd.py

查看 1688 Item One Click 技能包中的文件内容。

文件内容

scripts/capabilities/before_check/cmd.py

#!/usr/bin/env python
"""执行前检查 CLI 入口"""

import argparse
import json
import os
import sys

sys.path.insert(0, os.path.normpath(os.path.join(os.path.dirname(__file__), '..', '..')))

from _output import print_output, print_error
from capabilities.before_check.service import before_check

COMMAND_NAME = "before_check"
COMMAND_DESC = "执行前检查(判断是否可执行、是否需签署协议)"

def main():
    parser = argparse.ArgumentParser(description=COMMAND_DESC)
    parser.add_argument('--item_id', type=str, required=True, help='商品ID')
    parser.add_argument('--spi_code', type=str, required=True, help='操作码(如 spi_hsf_automatic_title)')
    parser.add_argument('--spi_params', type=str, required=True, help='操作参数(JSON字符串)')
    args = parser.parse_args()

    try:
        spi_params = json.loads(args.spi_params)
    except json.JSONDecodeError as e:
        print_error(ValueError(f"spi_params 不是合法的 JSON:{e}"))
        return

    try:
        result = before_check(args.item_id, args.spi_code, spi_params)
        msg_info = result.get("msgInfo", "") or result.get("message", "")
        has_agreement = "data" in result and isinstance(result.get("data"), str) and "协议" in result.get("data", "")

        if has_agreement:
            agreement_info = result.get("data", "")
            confirm_msg = result.get("message", "让用户确认协议后可以继续执行")
            markdown = f"📋 需要签署协议\n\n{agreement_info}\n\n{confirm_msg}"
            print_output(True, markdown, result)
        elif "不可执行" in msg_info:
            print_output(False, f"❌ {msg_info}", result)
        else:
            print_output(True, f"✅ 检查通过,{msg_info}", result)
    except Exception as e:
        print_error(e)

if __name__ == "__main__":
    main()