4.8 KiB
4.8 KiB
机器视觉软件授权管理系统 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 如何立刻通过回调锁死软件”。
- 绑定 SDK 的
3. 核心代码交互逻辑流程
-
应用启动 (App Init)
- UI 加载时,立刻实例化
Client并传入一个30 秒(Demo 演示专用)的heartbeat_interval_seconds。 - 配置好两个重要的回调:
on_license_updated: 接收到新证书时间,刷新界面的状态和过期时间。on_activation_required: 接收到违规被踢下线的消息,强制将“当前授权状态”标红,并置灰“启动机器视觉检测”按钮。
- 尝试执行
client.current_license()。有返回值则更新状态并放行,无返回值则提示“请绑定产品激活码”。
- UI 加载时,立刻实例化
-
激活交互处理 (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 后建议如下演示:
- 纯隔离环境发码秒跑测试:断开本机网络。在输入框粘贴带
&的产品激活码。点击激活,即可看到毫无卡顿地验证通过并允许点击“AI 检测”。证明离线下发的秒级极佳体验。 - 连接网络立刻防盗稽核测试:重新插上网络。在后台开着 SaaS 管理端(或 Postman 模拟),将这台设备在后台强制踢出/解绑。
- 心跳钩子秒杀演示:无需重启 Demo。等待最多 30 秒(Demo 心跳周期),控制台上会立刻打出错误日志,并且瞬间触发
on_activation_required回调,UI 面板变红并拒绝点击核心业务功能。证明防白嫖/超发管控的有效闭环。