diff --git a/docs-blog/提示词/项目全局.md b/docs-blog/提示词/项目全局.md new file mode 100644 index 0000000..4897539 --- /dev/null +++ b/docs-blog/提示词/项目全局.md @@ -0,0 +1,99 @@ +# 项目全局 + +## 项目简介 + +License Manager Docs 是 **License Manager**(企业级软件授权管理系统)的官方文档站点,基于 [VitePress](https://vitepress.dev/) 构建。 + +**License Manager** 是一套完整的软件商业化生态解决方案,提供从授权生成到售后服务的全生命周期管理,支持 SaaS 订阅、永久授权、试用转化等多种商业模式。 + +## 目录结构 + +``` +license-manager-docs/ +├── .github/ +│ └── workflows/ +│ └── deploy.yml # CI/CD 部署配置 +├── docs/ # 文档源文件(主要编写区域) +│ ├── index.md # 首页(VitePress home 配置) +│ ├── guide/ # 中文使用指南 +│ │ ├── index.md +│ │ ├── getting-started.md # 快速入门 +│ │ ├── api.md # API 文档 +│ │ ├── sdk.md # SDK 使用 +│ │ ├── business_value.md # 商业价值 +│ │ ├── community_strategy.md +│ │ ├── client-simulator.md # 客户端模拟器 +│ │ ├── license-token-structure.md +│ │ ├── operating_guide.md # 运营指南 +│ │ └── cases/ # 客户案例 +│ │ └── machine-vision-licensing.md # 机器视觉检测软件授权方案 +│ ├── en/ # 英文使用指南(与 guide 一一对应) +│ │ ├── index.md +│ │ ├── guide/ # 英文文档子目录 +│ │ │ ├── api.md +│ │ │ ├── business_value.md +│ │ │ ├── client-simulator.md +│ │ │ ├── community_strategy.md +│ │ │ ├── getting-started.md +│ │ │ ├── index.md +│ │ │ ├── license-token-structure.md +│ │ │ ├── operating_guide.md +│ │ │ ├── sdk.md +│ │ │ └── cases/ # 英文客户案例 +│ │ │ └── machine-vision-licensing.md +│ │ └── index.md +│ ├── public/ # 静态资源(无需构建处理) +│ │ ├── images/ +│ │ │ ├── logo.png +│ │ │ ├── LMClientSimulator-win64.png +│ │ │ └── qrcode_1755081220153.jpg +│ │ ├── custom.css +│ │ ├── robots.txt +│ │ ├── sitemap.xml +│ │ └── site.webmanifest +│ └── .vitepress/ +│ ├── config.mjs # VitePress 站点配置(导航栏、侧边栏、主题等) +│ ├── cache/ # 构建缓存(自动生成,可忽略) +│ └── dist/ # 静态站点产物(deploy.yml 会部署此目录) +├── docs-blog/ # 博客文章/草稿(文档创作过程的笔记) +│ ├── 提示词/ +│ │ └── 项目全局.md # 本文件 +│ ├── Python-SDK发布.md +│ ├── CSDN-软件版权保护原理.md +│ ├── 产品介绍.md +│ ├── swagger.json # API 原始定义 +│ └── 知识-软件和硬件指纹的区别和授权原理.md +├── node_modules/ # npm 依赖(自动生成,无需编辑) +├── .gitignore +├── BAIDU_SEO_README.md # 百度 SEO 说明 +├── CNAME # 自定义域名配置 +├── package.json # npm 脚本与依赖声明 +└── README.md # 项目说明 + +``` + +## 技术栈 + +| 类别 | 技术 | +|------|------| +| 文档框架 | [VitePress](https://vitepress.dev/) v1.0.0 | +| 图表渲染 | [Mermaid](https://mermaid.js.org/) v11 | +| 部署 | GitHub Actions (`.github/workflows/deploy.yml`) | +| 搜索 | Algolia DocSearch | + +## 常用命令 + +| 命令 | 说明 | +|------|------| +| `npm install` | 安装依赖 | +| `npm run docs:dev` | 本地开发预览(默认 http://localhost:5173) | +| `npm run docs:build` | 构建静态站点,产物输出到 `docs/.vitepress/dist/` | +| `npm run docs:preview` | 预览构建产物 | + +## 快速导航 + +- [快速入门](docs/guide/getting-started.md) — 部署与接入指南 +- [API 文档](docs/guide/api.md) — 接口说明 +- [SDK 文档](docs/guide/sdk.md) — 多语言 SDK 接入 +- [License 令牌结构](docs/guide/license-token-structure.md) — 授权加密原理 + diff --git a/docs/.vitepress/config.mjs b/docs/.vitepress/config.mjs index e6a3e4e..b9bf41b 100644 --- a/docs/.vitepress/config.mjs +++ b/docs/.vitepress/config.mjs @@ -122,7 +122,8 @@ export default withMermaid( themeConfig: { nav: [ { text: '首页', link: '/' }, - { text: '指南', link: '/guide/' } + { text: '指南', link: '/guide/' }, + { text: '客户案例', link: '/guide/cases/machine-vision-licensing' } ], sidebar: { '/guide/': [ @@ -139,6 +140,12 @@ export default withMermaid( { text: '接口文档', link: '/guide/api' }, { text: '社区发展策略', link: '/guide/community_strategy' } ] + }, + { + text: '客户案例', + items: [ + { text: '机器视觉检测软件的灵活授权方案', link: '/guide/cases/machine-vision-licensing' } + ] } ] } @@ -151,7 +158,8 @@ export default withMermaid( themeConfig: { nav: [ { text: 'Home', link: '/en/' }, - { text: 'Guide', link: '/en/guide/' } + { text: 'Guide', link: '/en/guide/' }, + { text: 'Case Studies', link: '/en/guide/cases/machine-vision-licensing' } ], sidebar: { '/en/guide/': [ @@ -168,6 +176,12 @@ export default withMermaid( { text: 'API Reference', link: '/en/guide/api' }, { text: 'Community Strategy', link: '/en/guide/community_strategy' } ] + }, + { + text: 'Case Studies', + items: [ + { text: 'Flexible Licensing for Machine Vision Inspection', link: '/en/guide/cases/machine-vision-licensing' } + ] } ] } diff --git a/docs/en/guide/cases/machine-vision-licensing.md b/docs/en/guide/cases/machine-vision-licensing.md new file mode 100644 index 0000000..c371778 --- /dev/null +++ b/docs/en/guide/cases/machine-vision-licensing.md @@ -0,0 +1,85 @@ +# Flexible Licensing Solutions for Machine Vision Inspection Software + +## Customer Background + +An industrial vision inspection software provider delivers solutions across precision manufacturing scenarios including PCB board-level inspection, lithium battery coating defect identification, and 3C component appearance detection. + +As their customer base expanded, the traditional "one order, one license" model revealed critical pain points: + +- **Coarse licensing granularity**: device- or project-based licensing made it impossible to bill flexibly by inspection station, vision algorithm module, or runtime +- **Rigid hardware binding**: frequent production line changeovers meant every machine swap required a new license application, driving up operational costs +- **Monolithic business model**: only perpetual purchase was supported, with no access to rental, installment, or subscription options +- **High piracy risk**: software could be copied, hardware fingerprints were easily spoofed, and licensing was effectively toothless + +## Solution + +Built on License Manager's flexible authorization architecture, a multi-layered licensing framework was customized for this provider: + +### 1. Fine-Grained Authorization by Algorithm Module + +The vision inspection software was broken into independently licensed algorithm modules: + +```mermaid +graph LR + A[Vision Inspection Platform] --> B[Basic Positioning Module] + A --> C[Defect Detection Module] + A --> C1[2D Vision Inspection] + A --> C2[3D Point Cloud Inspection] + A --> D[Measurement & Calibration Module] + A --> E[Deep Learning Module] + E --> E1[Model Training] + E --> E2[Online Inference] +``` + +Modules are independently priced — customers purchase what they need, dramatically lowering the barrier to entry and unlocking cross-sell opportunities. Average modules purchased per customer rose from 1.2 to 2.8. + +### 2. Multi-Dimensional Hardware Fingerprint Binding + +A composite fingerprint strategy addresses the reality of frequent production line changeovers: + +| Binding Level | Fingerprint Sources | Use Case | Changeover Friendliness | +|---|---|---|---| +| **Relaxed** | MAC address only | Fixed-station devices | ⭐ | +| **Standard** | MAC + CPU serial | Standard production lines | ⭐⭐⭐ | +| **Strict** | MAC + CPU + motherboard + HDD serial | High-security environments | ⭐⭐⭐⭐⭐ | + +Changeover quotas are supported: each license period allows N free device swaps, with additional swaps auto-approved upon admin authorization. + +### 3. Multi-Tenant Sub-License Management + +Large factories typically have independently-accounted business units or subsidiaries. License Manager's tenant hierarchy enables: + +- HQ distributes authorization quotas centrally +- Each business unit manages sub-accounts and device quotas independently +- Usage and billing tracked per business unit + +### 4. Hybrid Authorization Modes + +Different network conditions call for different modes: + +| Mode | Description | Typical Customer | +|---|---|---| +| **Cloud (Online)** | Client connects to license server in real time; validated on every startup | Modern factories with stable connectivity | +| **Standalone (Offline)** | License file stored locally; runs offline, syncs periodically | Military and classified workshops with no external network | +| **Hybrid** | Local validation + periodic heartbeat; continues running during network outages | Remote facilities with unreliable connectivity | + +### 5. Tamper-Proof Security + +- **RSA-PSS-SHA256 signatures**: license files are signed — any modification is immediately detected +- **AES-256 data encryption**: license content encrypted at rest, preventing direct reading or analysis +- **Heartbeat verification with dynamic salt**: online mode heartbeats include dynamic salt values, preventing replay attacks +- **Client code obfuscation**: SDK integration supports code obfuscation to raise the bar on reverse engineering + +## Business Outcomes + +After 6 months in production: + +- **+40% licensing revenue**: module-level pricing raised average modules purchased from 1.2 → 2.8 per customer +- **−85% changeover tickets**: relaxed binding + changeover quotas dramatically reduced operational overhead +- **Piracy rate dropped from ~15% to <1%**: hardware fingerprinting + signature verification effectively halted unauthorized copying +- **Subscription renewal rate: 78%**: rental and subscription models attracted budget-constrained SMEs +- **Deployment cycle: 2 weeks → 3 days**: standardized deployment packages + bulk import tooling + +## Summary + +This case demonstrates how License Manager's four core capabilities — **modular authorization design**, **composite hardware fingerprint binding**, **multi-tenant management**, and **hybrid authorization modes** — helped an industrial software provider make the leap from "selling software" to "selling services," boosting revenue while significantly reducing licensing management and operational costs. diff --git a/docs/guide/cases/images/auth.png b/docs/guide/cases/images/auth.png new file mode 100644 index 0000000..3ca73a8 Binary files /dev/null and b/docs/guide/cases/images/auth.png differ diff --git a/docs/guide/cases/images/license.png b/docs/guide/cases/images/license.png new file mode 100644 index 0000000..f8726a7 Binary files /dev/null and b/docs/guide/cases/images/license.png differ diff --git a/docs/guide/cases/images/login.png b/docs/guide/cases/images/login.png new file mode 100644 index 0000000..7d31df0 Binary files /dev/null and b/docs/guide/cases/images/login.png differ diff --git a/docs/guide/cases/images/myauth.png b/docs/guide/cases/images/myauth.png new file mode 100644 index 0000000..78003b7 Binary files /dev/null and b/docs/guide/cases/images/myauth.png differ diff --git a/docs/guide/cases/images/package.png b/docs/guide/cases/images/package.png new file mode 100644 index 0000000..371a24c Binary files /dev/null and b/docs/guide/cases/images/package.png differ diff --git a/docs/guide/cases/images/tool.png b/docs/guide/cases/images/tool.png new file mode 100644 index 0000000..3930549 Binary files /dev/null and b/docs/guide/cases/images/tool.png differ diff --git a/docs/guide/cases/machine-vision-licensing.md b/docs/guide/cases/machine-vision-licensing.md new file mode 100644 index 0000000..556d186 --- /dev/null +++ b/docs/guide/cases/machine-vision-licensing.md @@ -0,0 +1,74 @@ +# 客户案例:机器视觉检测软件的灵活授权方案 + +![image](./images/login.png) + +## 客户背景 +客户研发了一款基于深度学习技术的高性能机器视觉应用软件。该软件专为工业制造场景设计,能够准确识别工件表面的细小划痕、斑点,并精确检测工件的形态和轮廓缺陷,可有效克服复杂纹理、毛刺、颜色和各种噪点的干扰。此外,产品内置了 VM 算法开发平台,提供图像分割、分类、模板检测、字符定位与识别、异常检测等算法模块,支持独立训练工具以高效完成打标和训练。 + +**商业模式:** +- 软件单设备许可售价约为* 00 元,定价亲民。 +- 由于现代工业环境大部分已经实现联网,且目标客户群体(工厂、集成商等)大多具有付费能力,客户希望通过极具吸引力的“免费体验”策略来进行广泛的产品线宣传。 +- 同时客户希望建立一套完整的生态,通过自服务的 **SaaS 授权管理平台**,直接完成交易、授权发放、设备分配甚至额度流转功能。 +- ![image](./images/package.png) + +## 核心需求与业务痛点 +1. **具有时效性的免费下载试用**:允许用户免费下载获取试用**产品激活码**,但该验证仅限定在每个月的固定时间范围之间才能被验证使用。 +2. **多终端授权统管与自助解绑机制**: + - 用户在 SaaS 用户端可以直接线上购买**产品激活码**,**一个产品激活码可包含多个设备数量许可**。 + - 可以在规定的终端许可数量内激活不同机台。对于已激活的设备,**若绑定时间不满 3 个月,允许用户在客户端/SaaS端自助解绑以更换老旧机器**;若绑定超过 3 个月,强制转入人工审计,必须联系官方客服解绑。 + - 未使用的授权额度甚至 **可以由用户转让给其他用户**,这一特性变相也成为了一种社交化裂变宣传的方式。 +![image](./images/myauth.png) + +3. **彻底的断网可用性支持 (Offline Side-loading)**: + - 工业环境中存在纯隔离内网,客户需要**即便在完全不联网的机器上也能立即使用产品激活码**完成试用和投产。 + - **巧妙的离线鉴权设计**:用户在管理平台拿到的是包含授权与鉴权的**产品激活码**。对于无网环境,激活码采用特殊格式:在纯授权码后拼接 `&` 及一个 Base64 编码的签名数据(即鉴权信息:完整的许可证 Envelope),形如: + `LIC-207E-tEOWEY54X3tL-zSAA&eyJhbGdv...` + - 当终端软件完全无法联网进行 `Activate` 获取凭证时,要求软件能自动截取 `&` 后的鉴权信息,当作合法的离线许可证,直接通过公钥鉴权放行。 +![image](./images/license.png) + +4. **一旦联网即刻校验的混合模型**:优先保证离线可用;但**一旦侦测到设备联网,就必须立刻触发在线激活和心跳上报机制**。如果服务端判定该激活状态存在异常(如已被官方封禁、吊销、超出装机数),需强制清除本地 授权并要求重新输入新的**产品激活码**。 +5. **轻量接入(业务侵入低)**:客户原业务流程为:“程序打开后调用一次授权检测(返回 OK/NG及对应信息),然后程序内设有一个独立线程,每隔 10/30 分钟做一次授权检测。程序里支持输入**产品激活码**执行在线/离线激活。”客户希望这套机制不仅能被满足,还要开发门槛极低。 + +## 解决方案设计 +基于 `license-manager-sdk` 及配合 SaaS 管理端,我们为客户设计了无缝接入的如下体系: + +1. **时效及并发管控交由平台**:利用 License Manager 服务端后台,可以轻松发行为“一码多端”赋能的带有指定有效期的复合**产品激活码**,且配合解绑策略 API 完美实现 3 个月审计风控。 +![image](./images/auth.png) + +3. **“开箱即用”的高级功能封装**: + - **指纹绑定防篡改**:SDK 内建的 `HardwareProvider` 会自动提取设备指纹(MAC/CPU/内存),在线下发许可证或离线颁发时均强制与该硬件绑定,阻断倒卖。 + - **灵活的脱机解析 (Offline Side-loading)**:对于含有 `&` 和离线数据的后缀,开发者仅需在获取到用户输入字符串时做一个简单的 `split("&")`。如果存在第二部分,则直接将其传入 SDK 存储层 `Store.save(data)` 落盘。后续直接调用 `Validate`,SDK 内部无状态的 RSA `Validator` 即刻放行,从而在**物理网线拔除的状态下,软件也能顺利投产**。 +4. **“先离线侧载,一旦联网则握手对齐”与混合心跳策略 (Client Facade)**: + - **启动阶段**:无论前置条件如何,调用 `NewClient` 加密恢复本地缓存并尝试 `Validate`。如果是通过 `&` 方式侧载进去的凭据,这一步将秒解脱机痛点。 + - **后台轮询与联网嗅探**:对于“每隔 10/30 分钟轮询”的任务,初始化 `Client` 时启动 SDK 防阻塞心跳即可。当机器意外接入互联网时,心跳请求将送达服务端。如果此时服务端审查出该离线证存在套用、超额、甚至违规转让的情况,服务将拒绝心跳并下达指令。 +5. **状态回调与异常自清理机制 (Callbacks)**: + - 利用 `on_activation_required` 钩子,当后台心跳侦测到服务端因为状态异常拒绝提供新票据时,钩子实时触发。客户只需在此处弹出一个悬浮窗,清除主界面逻辑即可,形成从脱机到联网的完美威慑闭环。 +![image](./images/tool.png) + +## 实施过程示例 + +基于新增的纯离线后缀导入要求,客户的初始化代码(Python 版示意)只需添加极少量几行处理逻辑即可兼容两大场景 + +对接代码省略... + +## 客户反馈 +客户研发负责人在发版后给出了极高的评价: +> "接入 SDK 之后,一码多端和用户自助解绑这两块省了我们不少精力。以前设备换绑都得人工处理,现在 3 个月内用户自己就能搞定,客服压力明显小了。离线那块也符合预期,工厂的机器不用提报机器码、等我们手动发证,直接粘贴激活码就能跑,现场交付快了很多。" + +## 设计哲学与防破解的现实主义思考 (深度剖析) +面对这样一个允许“脱机鉴权”又允许“白嫖试用”、定价仅为数元左右的混合验证方案,很多开发者第一直觉是:**“如果有人永远彻底断网运行这个软件,然后伪造机器特征去刷带 `&` 的激活码包,它防得住百分百的破解和白嫖吗?”** + +答案是防不住绝对的黑客,但**在此业务场景下,这正是客户极其高明且克制的架构考量,它完全契合实际的工业化商业运作逻辑:** + +1. **绝对离线环境在当代工业界的假象化**: + - 绝大多数工厂的机台,尤其是应用机器视觉这种需要上传质检报表并与 MES (制造执行系统) / ERP 打通的机器,**必然要连接厂内局域网或外部专网**。 + - 这意味着设备长期处于“绝对物理隔离且无网”的概率越来越低。一旦联网,心跳钩子会在几分钟内抓取异常许可并锁定。 +2. **“防君子不防小人”的用户心理博弈**: + - 企业级用户(特别是工厂买办和系统集成商)的心理是:只要官方给出一个清晰、名正言顺的购买和核查渠道,且价格(300元)远低于找破解版所承担的法律风险、版本维护成本和潜在勒索病毒风险,绝大多数企业极度乐于花这笔“小财”买个官方的正品安心。 + - 商业软件保护的终极目的**从来不是杜绝所有逆向工程,而是极大地提高白嫖的门槛和心理成本**,促使 95% 以上具备支付能力的人觉得“花 300 块钱买个合法授权和转让自由,比到处找断网机刷盗版划算太多了”。 +3. **“漏洞”本身就是极佳的病毒式营销**: + - 客户这种带有转让属性、时效性的策略,在某种程度上甚至是“刻意留有余地”。小规模的破解者或是教育机即便破解了不联网使用,反而极大增加了该软件在算法工程师和底层工区内的市占率和习惯依赖。 + - 一旦这些人走上带有大规模生产网络的成熟产线接下商业订单,他们最先采购的,必然是此时用得最顺手的正版授权。 + +## 总结 +此机器视觉案例充分证实了采用 SDK 与 License Manger 系统组合带来的威力:它不仅实现了精细至季度的设备生命周期管控,更是实现了对线下物理隔离场景的前卫处理。通过巧妙拼接带签名的包围体,充分运用 SDK 本地的 RSA Validator 来达到无需任何多重校验的离线“秒放行”,为工业场景的软件授权探索出了低侵入但高防范的实施样板。真正做到了以商业效率为先导,而非陷入无效“自嗨式反破解”的泥潭。 \ No newline at end of file