支持多产品计划展示、LICOFF 离线签发、支付独立配置与调试,以及分析看板;同步更新 README 与集成文档。 Co-authored-by: Cursor <cursoragent@cursor.com>
2.8 KiB
2.8 KiB
OpsXShell / 多产品授权模型
管理端 opsx-licence 与客户端(PC / Web / 移动)的最小合理授权结构。目标:在线可座位管理,离线可自包含验签,支付与发证解耦;产品维度通用,不绑死单一桌面端。
核心实体
| 实体 | 含义 |
|---|---|
| Product | 可售卖产品(如 opsxshell;可扩展更多) |
| Plan | 定价档位(SKU),不是用户手里的证 |
| Customer | 客户(邮箱 / 公司) |
| License | 许可证实例(在线 LIC-… 或离线 LICOFF-…) |
| Activation | 设备座位(在线多座位;离线签发时绑 1 台) |
| Order | 支付订单;Waffo 只收款,发证统一走 License |
「客户权益 Entitlement」仍可能被订单履约写入,但管理菜单已移除独立权益页——运营以 订单 + License 为准。
三档 Plan(OpsXShell 默认)
| plan_type | 显示名 | 时长 | 设备数 |
|---|---|---|---|
trial |
体验 | 180 天 | 1 |
yearly |
包年 | 365 天 | 2 |
perpetual |
永久 | 0=永久 | 5 |
管理端 定价计划 列表必须展示所属 产品;启动时 seed 会同步中文名。
在线 vs 离线
在线证(LIC-…)
- 服务端签发与激活;座位在
activations - 客户端:
/api/v1/license/activate|verify|heartbeat|deactivate - 支持 trial / yearly / perpetual;永久仅在线
离线证(LICOFF-1.<payload>.<sig>)
- Ed25519 自包含;载荷含
device_id、plan_type、iat/exp - 最长 365 天;仅 trial / yearly;禁止永久离线证
- 必须绑定对方提供的 device_id(换机无效)
- 不可「续期」:到期后重新签发新序列号(可同设备)
- 管理端独立页:
/offline-licenses - 环境变量:
OFFLINE_LICENSE_SEED(派生密钥);公钥可供客户端嵌入
支付边界
- 配置入口:支付 菜单(非系统设置)
- Product ID 使用可扩展映射表(多 SKU)
- 调试:
POST /api/payment/waffo/debug - 详见 waffo-integration.md
客户端约定
- API Base:
https://l123.91ai.io/api(或自建域名 +/api) - 激活识别:
LIC-…→ 在线;LICOFF-…→ 本地验签 - 激活请求建议带
device_infoJSON(platform/country等),便于仪表盘「平台 / 地理」分布
仪表盘指标
- License 总数、已过期、在线设备(约 5 分钟心跳)
- 本月 / 累计收入、License 增长趋势
- 产品分布、地理/网络粗分、客户端形态(pc/web/mobile)
废弃 / 避免
- 计划英文渣名面向运营(
Trial 180d等) - 旧
opsx1.令牌、客户端粘贴商户私钥当激活码 - 永久离线证、未绑设备的万能离线串
- 把支付私钥写进仓库或前端