外观
按客户隔离
一套智悟可以服务多家客户,也可以一家客户一套。无论哪种,隔离的单位都是租户码。事件、规则、口径、任务、裁定、轨迹都带租户码,智悟按它守门。
两种部署方式
| 方式 | 配置 | 适用 |
|---|---|---|
| 一租户一实例 | UANMIND_TENANT 配成该租户码 | 私有化部署、现场部署,隔离最彻底 |
| 一实例多租户 | 不配 UANMIND_TENANT,订阅全部租户 | 云端多租户运营 |
多租户实例里,每个租户的规则与口径各自登记、各自生效。当前通知通道(飞书群、短信收件人、站内信收件范围)是实例级配置,多租户实例下各租户共用一套;需要各租户各自收通知的,用一租户一实例。
规则按租户
- 规则必须带
tenant_code,缺了按坏规则丢弃。宁可少一条规则,也不能有一条对所有租户生效的规则。 - 匹配时租户先于一切条件:一家客户登记的"夜间派单"规则,不会套到另一家的事件上。
- 判定阈值(
threshold.uanmind)每租户一份。租户自己没登记的,退回实例默认租户的,再退回配置兜底,不拿别的租户的口径顶上。 - 提示词同样按租户取。没登记的退内置版,不借用别的租户的。
多租户实例只把自己服务的租户的口径拉进内存,别的租户的不进。
值守台按会话租户守门
| 身份 | 范围 |
|---|---|
| 从门户单点登录的用户 | 只能看、只能动本租户的事件、任务与轨迹 |
| 运营密钥登录 | 可跨租户,可用参数指定租户 |
守门是两道:智悟先按编号查出对象核对租户,再把租户码一并声称给虹元,虹元写入时再核一次,不符则拒绝什么都不改。会话没有租户的人不能动任何租户的东西。
从门户进入的用户登记规则时,租户码被强制写成会话租户,写别的不生效。合并轨迹要求两条属于同一租户。
机器密钥绑定租户
照片判定接口的租户由密钥决定,不由请求体自报。
| 配置 | 形态 | 用途 |
|---|---|---|
MIND_API_KEY + MIND_API_KEY_TENANTS | 一把密钥,代表一个或多个租户 | 给随手拍 AI 服务这类一个实例服务多租户的调用方 |
MIND_API_KEYS | 租户:密钥 逗号分隔,一把只代表一个租户 | 给单租户接入方,如客户自己的系统 |
规则:
- 密钥只代表一个租户时,请求体可以不写
tenant。 - 密钥代表多个租户时,必须写
tenant,不写返回 400。 - 写的
tenant不在密钥名单内,返回 403。 - 一把密钥都没配时退化为虹元管理密钥,只代表实例默认租户;正式接入务必单独配一把,不要把虹元管理密钥交给调用方。
响应里的 tenant 是最终认定的租户。状态接口按租户分别计数照片判定次数,能看出各租户各用了什么口径。这份分租户明细只给运营身份看,匿名访问拿不到。
状态与规则接口按身份给
| 身份 | 状态接口 | 规则摘要接口 |
|---|---|---|
| 匿名 | 只有汇总,不含各租户名单、计数、阈值与提示词清单 | 拒绝 |
| 客户租户的门户会话 | 同匿名 | 只有本租户的规则 |
| 运营身份(管理密钥,或实例默认租户的门户会话) | 全量 | 全部租户 |
数据在哪
智悟没有本地库。所有带租户码的数据都在虹元,虹元按租户码隔离,云端多租户按库物理隔离。智悟进程内只有游标缓存、规则与口径的内存副本、冷却与节流表,重启即清,从虹元重新拉。
唯一落盘的是口径缓存文件:最近一次从虹元拉到的规则、提示词、阈值与模型台账,只留本实例服务的租户,文件权限仅服务账号可读。它的用处是虹元不可达或重启时照样按各租户口径判,见响应规则。
冷却与节流的键里含租户码,一家客户的冷却不会压掉另一家的通知。
规划中
- 通知通道按租户配置(各租户各自的飞书群、短信收件人、站内信收件范围)
- 车辆轨迹关联按租户取阈值口径(当前多租户实例共用实例默认租户的口径)