Files
license-manager-sdk-python/examples/客户案例1/Demo设计.md
T
2026-02-27 14:29:48 +08:00

4.8 KiB
Raw Blame History

机器视觉软件授权管理系统 Demo设计文档

客户要求我们做一个测试demo,调用python sdk,模拟产品端实现授权对接。该 Demo 需要桌面端运行。

本设计基于针对“机器视觉应用软件”客户提炼出的核心商业需求和接入流程,通过一个界面直观地向客户呈现 SDK (全自动脱机/在线混合鉴权、SaaS平台设备管控、后台静默心跳)的实际运行效果。


1. 技术栈选择

  • UI 框架: PyQt5 或 PySide6(机器视觉领域的工程师最为熟悉的跨平台桌面 UI 框架之一,也可以用 tkinter 以保证最小化无依赖运行)。
  • SDK 层: license-manager-sdk-python(本地调用的核心依赖)。
  • 打包工具: PyInstaller (预期输出:可验证交付的独立 .exe 执行文件)。

2. 界面设计布局 (UI)

Demo 界面将分为 3 个核心区域,确保授权状态的透明和实时性。

区域一:设备识别与状态显示牌 (Top Panel)

  • 设备指纹 (Hardware ID): 只读文本框,直观展示底层 HardwareProvider 给当前机器生成的唯一 Hash(如:a8f5c3...),旁边有一键复制按钮方便客户测试。
  • 当前授权状态: 醒目的红/绿状态灯及文字(未激活 / 试用中 / 已授权 / 授权已过期 或 被封禁)。
  • 到期时间: 倒计时或日期字符串显示。
  • 设备额度使用状况: 如 Max Activations: 3 等透传字段。

区域二:授权码输入与操作区 (Middle Panel)

  • 产品激活码输入框: 支持长字符串输入(提示用户可以输入纯 LIC-xxxx 在线激活码,也可以输入带 & 的完整离线鉴权码)。
  • 激活/验证 按钮:
    • 点击后,首先利用逻辑判断是否含有 & 进行分流。
    • 含有 &:提取后半段作为离线证书写入磁盘,触发 Client 本地验证,成功后立即变绿。
    • 不含 &:触发 Client 在线激活 (Activate)。
  • 清理本地许可 按钮 (清空缓存测试用): 用于删除 license.lic 触发未授权状态,以便于客户在一台机器上反复测试。

区域三:业务模拟与底座运行日志 (Bottom Panel)

  • 启动机器视觉检测 (模拟按钮):
    • 每次点击前判断 client.validate()。如果在授权期内容,弹出“成功启动 AI 模板检测”弹窗;如果鉴权失败或心跳回调判定锁定,弹出阻挡警告。
  • 心跳/运行控制台日志 (Text Area):
    • 绑定 SDK 的 logger。
    • 实时打印:初始化成功、读取本地证书、后台 30分钟(演示可改为30秒) 心跳尝试上报的记录、网络失败退避的信息。
    • 特别监控:打印 on_activation_required 钩子的触发日志,向客户演示“一旦服务器封禁,SDK 如何立刻通过回调锁死软件”。

3. 核心代码交互逻辑流程

  1. 应用启动 (App Init)

    • UI 加载时,立刻实例化 Client 并传入一个 30 秒(Demo 演示专用)的 heartbeat_interval_seconds。
    • 配置好两个重要的回调:
      • on_license_updated: 接收到新证书时间,刷新界面的状态和过期时间。
      • on_activation_required: 接收到违规被踢下线的消息,强制将“当前授权状态”标红,并置灰“启动机器视觉检测”按钮。
    • 尝试执行 client.current_license()。有返回值则更新状态并放行,无返回值则提示“请绑定产品激活码”。
  2. 激活交互处理 (Activation Workflow)

    • 当用户点击“激活”:
      user_input = ui.line_edit_auth_code.text()
      if "&" in user_input:
          # 脱机侧载演示逻辑
          auth_code, envelope = user_input.split("&", 1)
          write_envelope_to_local_disk(envelope) # 将离线证书落地
          self.init_sdk_client(auth_code) # 使用 SDK 直接拉起脱机验证
      else:
          # 在线激活演示逻辑
          self.init_sdk_client(user_input) 
          # SDK 将在底层自动跑完 Activate() 网络调用
      

4. 给客户演示的核心高光场景 (Showcases)

为获得客户(老板或技术总监)认可,做完 Demo 后建议如下演示:

  1. 纯隔离环境发码秒跑测试:断开本机网络。在输入框粘贴带 & 的产品激活码。点击激活,即可看到毫无卡顿地验证通过并允许点击“AI 检测”。证明离线下发的秒级极佳体验。
  2. 连接网络立刻防盗稽核测试:重新插上网络。在后台开着 SaaS 管理端(或 Postman 模拟),将这台设备在后台强制踢出/解绑。
  3. 心跳钩子秒杀演示:无需重启 Demo。等待最多 30 秒(Demo 心跳周期),控制台上会立刻打出错误日志,并且瞬间触发 on_activation_required 回调,UI 面板变红并拒绝点击核心业务功能。证明防白嫖/超发管控的有效闭环。