# 软件授权说明（用户版）

授权服务：[https://sq.bz121.com/](https://sq.bz121.com/)

## 激活流程

1. 部署并启动本系统（三所或中控任一页面）。
2. **未授权时**访问任意业务页会强制跳到 **`/license`**；已授权后默认无法再打开该页（会跳回首页）。
3. 复制页面上的 **设备 ID**。
4. 联系微信 **dekun03** 购买（备注设备 ID），按约定支付 **USDT** 后获得 **激活码 + 客户密钥**（每张码一把密钥）。
5. 在 `/license` 填写 **客户密钥** 与激活码并兑换（密钥写入本地 `data/license_state.json`；续费一般可留空）。激活成功后自动进入系统。
6. **续费**（设备仍在授权期内）：打开 **`/license?renew=1`** 兑换续费码。换机在新设备上直接进 `/license` 即可（新设备尚未授权）。

## 定价（整机授权）

| 项目 | 说明 | 金额 |
|------|------|------|
| 年卡 | 365 天；**整机授权**（单所安装也按整机） | **1000 USDT** |
| 部署费 | 一次性代部署/装机（自装是否收取以约定为准） | **100 USDT** |

- 仅售年卡，无月卡/季卡。  
- 续费：年卡 **1000 USDT**（一般不再收部署费）；续费码沿用原客户密钥。  
- 换机：旧设备立即失效，需换机码（向卖家申请）；密钥不变。  
- USDT 收款地址由卖家提供（链与地址以当时通知为准）。

## 客户密钥（Client Token）

卖家在授权站后台 **新激活码** Tab 可复制「激活码 + 客户密钥」。  
每张新购码绑定独立密钥；兑换后归该订阅长期使用。  
**不要**再使用后台「系统设置」里的全局 `CLIENT_API_KEY` 发给新用户（那仅兼容旧数据）。

本地优先级：环境变量 `LICENSE_CLIENT_KEY` > 授权页保存的密钥。

## 环境变量（可选）

在**仓库根目录**创建 **`license.env`**（勿提交 Git）：

```bash
cd /opt/crypto_monitor_user   # 或你的安装目录
cp license.env.example license.env
```

```env
LICENSE_API_URL=https://sq.bz121.com
# 可选：也可只在 /license 页填写卖家发的客户密钥
# LICENSE_CLIENT_KEY=
# LICENSE_OFFLINE_GRACE_HOURS=72
# LICENSE_DISABLED=false
```

改完环境变量后**重启** Flask / 中控进程。也可在各实例 `.env` 里写同样的 `LICENSE_*`（不要留空键）。

许可状态保存在仓库根目录 **`data/license_state.json`**（三所 + 中控共用，含本地保存的客户密钥）。

系统约每 **3 天** 向授权站校验一次；明确过期或换机后旧设备将无法使用。
