feat: add service config templates and extraction script

Former-commit-id: 1de24b7eb79676d1aba9d799a58c5a753290cf52
This commit is contained in:
反编译工作区
2026-05-01 19:38:01 +08:00
parent 3175b7074b
commit 8b15445328
2433 changed files with 8322164 additions and 1604 deletions
@@ -0,0 +1,223 @@
# 租户 / 组织 / 人员 / 访客 — 数据模型、表关系与用例
**文档性质**:架构梳理(电梯仓 + 组织组件约定)。
**校验状态**:已使用 [`tools/visitor_floor_verification/.env.visitor_verify`](../../maven-cw-elevator-application/tools/visitor_floor_verification/.env.visitor_verify) 所列主机(本地开发库)执行 **`INFORMATION_SCHEMA` + 抽样查询**,纪要见 **§6.1**(日期 **2026-04-30**)。其它环境仍以现场库为准。
**关联精读**[访客注册与派梯楼层 — 业务流程](../testing/visitor-registration-business-flow.md)、[租户访客默认楼层隔离边界](../testing/tenant-visitor-default-floor-isolation.md)。
---
## 1. 术语与请求上下文
| 术语 | 含义 | 典型落点 |
|------|------|----------|
| **租户 / 机构 ID** | 多租户数据隔离边界 | HTTP Header **`businessid`** → `FeignThreadLocalUtil``CloudwalkCallContext.company.companyId` |
| **`business_id`(库列)** | 与上下文 **`businessid`** 相同的字符串 | 组织库 `cw_is_organization.BUSINESS_ID``cw_is_person.BUSINESS_ID`;电梯库 `tenant_visitor_floor_policy.business_id``image_rule_ref.business_id` |
| **组织节点 ID** | 机构树上一节点(公司、部门等) | `cw_is_organization.ID`;父子关系 **`PARENT_ID``ID`** |
| **人员主键 `personId`** | API / 组件语境的人员 ID | 对应组织库 **`cw_is_person.ID`**(导出 CSV 列名为 **`ID`** |
| **被访人** | 接待访客的员工 | `add/visitor` 请求体字段 **`personId`**(勿与访客混淆) |
| **访客** | 访客档案 | 请求体 **`visitorId`**;派梯写库时 **`image_rule_ref.person_id` = 访客 ID** |
**关键辨析**
- **`business_id` 不是 `cw_is_organization` 的主键**。组织节点主键为 **`ID`****`BUSINESS_ID`** 是在**同一租户下多行组织节点上重复出现**的作用域字段。
- 跨库之间**不存在**数据库级外键;一致性依赖 **`business_id`** 与 **`cw_is_person.ID`**API 字段 `personId`)。关联表 **`cw_is_person_organization_ref.PERSON_ID`** 存储的也是该 **`ID`**。
---
## 2. 数据库边界(两库)
```mermaid
flowchart TB
subgraph orgLib [component_organization]
O[cw_is_organization]
P[cw_is_person]
R[cw_is_person_organization_ref]
L[cw_is_person_label_ref]
LB[cw_is_label]
end
subgraph elevLib [cw_elevator_application]
POL[tenant_visitor_floor_policy]
IRR[image_rule_ref]
end
O -->|"树 PARENT_ID"| O
R -->|"ORG_ID"| O
R -->|"PERSON_ID"| P
L -->|"PERSON_ID"| P
L -->|"LABEL_ID"| LB
POL -.->|"business_id 对齐 BUSINESS_ID"| P
IRR -.->|"business_id"| P
IRR -.->|"person_id 常为访客"| P
```
---
## 3. 逻辑 ER(组织库)
组织侧表无权威 DDL 收于本仓库;下列字段来自导出脚本、测试文档与 [`export_catalog.py`](../../maven-cw-elevator-application/tools/visitor_floor_verification/scripts/export_catalog.py) 中的 SQL 用法。
```mermaid
erDiagram
cw_is_organization {
string ID PK "组织节点"
string PARENT_ID FK "父节点 ID 可空"
string BUSINESS_ID "租户范围重复列"
string NAME "节点名称"
}
cw_is_person {
string ID PK "人员主键 API personId"
string BUSINESS_ID "租户"
string NAME "姓名"
int IS_DEL "是否删除"
}
cw_is_person_organization_ref {
string PERSON_ID FK "人员"
string ORG_ID FK "组织节点"
}
cw_is_organization ||--o{ cw_is_organization : "parent_child"
cw_is_person ||--o{ cw_is_person_organization_ref : "membership"
cw_is_organization ||--o{ cw_is_person_organization_ref : "org_node"
```
**`cw_is_person` 列名与访客判定**
- 仓库内导出示例 [docs/testing/_cw_is_person__202604302030.csv](../testing/_cw_is_person__202604302030.csv) 表头为 **`ID`**, **`BUSINESS_ID`**, **`IS_DEL`** 等,与 **2026-04-30 开发库**一致。
- 开发库 **`cw_is_person` 不存在**列:`person_id``deleted``labels``business_name``organization_name`。访客标签通过 **`cw_is_person_label_ref`**`PERSON_ID``LABEL_ID`)关联 **`cw_is_label`**(含 `BUSINESS_ID``NAME`);示例租户下 **`NAME='访客'`** 对应 **`LABEL_ID=ed2dbab6d6234a7287106b80857c819e`**。
---
## 4. 逻辑 ER(电梯库)
依据 [`tenant_visitor_floor_policy.sql`](../../maven-cw-elevator-application/releases/v2.0.0/ddl/tenant_visitor_floor_policy.sql) 与 [`ImageRuleRefMapper.xml`](../../maven-cw-elevator-application/cw-elevator-application-data/src/main/java/cn/cloudwalk/elevator/record/mapper/ImageRuleRefMapper.xml)。
```mermaid
erDiagram
tenant_visitor_floor_policy {
string id PK
string business_id "租户 UK 组成部分"
string policy_type "如 INTERSECT_ALLOWLIST"
text allow_zone_ids "JSON zoneId 数组"
string building_id "预留楼栋维度可空"
int enabled
bigint policy_version
}
image_rule_ref {
string id PK
string business_id
string zone_id "楼层区域"
string zone_name
string parent_rule "父规则"
string person_id "访客开通场景为访客"
int person_delete
string include_labels
string include_organizations
int is_default
}
```
**访客默认楼层策略语义(UC-01,未传 `floorIds`**
- 启用且 **`allow_zone_ids` 非空**时:生效楼层为 **`PersonResult.floorList``allow_zone_ids`**(保持 `floorList` 顺序)。
- 详见 [`PersonRuleServiceImpl#addVisitor`](../../maven-cw-elevator-application/cw-elevator-application-service/src/main/java/cn/cloudwalk/elevator/person/impl/PersonRuleServiceImpl.java) 与 [租户访客默认楼层-数据库配置阶段技术设计](../business/租户访客默认楼层-数据库配置阶段技术设计.md)。
---
## 5. 角色与派梯用例(电梯侧)
```mermaid
flowchart LR
actor Caller as Caller_BFF
participant API as AcsPersonController
participant PR as PersonRuleServiceImpl
participant Org as PersonService_detail
participant Pol as TenantVisitorFloorPolicyDao
participant IRR as ImageRuleRefDao
participant Img as ImageStorePersonService
Caller -->|"POST_add_visitor"| API --> PR
PR -->|"floorIds_empty"| Org
PR --> Pol
PR --> IRR
PR --> Img
```
```mermaid
flowchart TD
subgraph UC01 [UC01不传floorIds]
U1[add_visitor]
U2[detail_host_floorList]
U3[optional_policy_intersect]
U4[write_image_rule_ref_visitor]
U5[batchBind_visitor]
U1 --> U2 --> U3 --> U4 --> U5
end
subgraph UC02 [UC02显式floorIds]
V1[add_visitor]
V2[skip_detail_and_policy]
V3[write_rules_bind]
V1 --> V2 --> V3
end
subgraph UCRead [回读验收]
R1[passRule_image_personId_visitor]
end
```
---
## 6. 附录:现场核对 SQL 与纪要
### 6.1 开发库核对纪要(2026-04-30
以下为使用 **`maven-cw-elevator-application/tools/visitor_floor_verification/.env.visitor_verify`**(主机、端口、账号由本地填写,**勿将密钥写入 Git**)连接所得摘要:
| 项目 | 结果 |
|------|------|
| 根机构 **`BUSINESS_ID=2524639890ba4f2cba9ba1a4eeaa4015`** | 节点 **`NAME=星河湾中心`**`ID=d656e3ab3f61440bb7b9bc23b76834b9`**与 `BUSINESS_ID` 字符串不相等** |
| `cw_is_person` | 主键列 **`ID`**;删除 **`IS_DEL`****无** `person_id``deleted``labels``business_name``organization_name` |
| `cw_is_organization` | 含 **`ID``PARENT_ID``BUSINESS_ID``NAME``IS_DEL`** 等(大量 `EXT*` |
| `cw_is_person_organization_ref` | **`ID``PERSON_ID``ORG_ID`** 及审计列 |
| `cw_is_person_label_ref` / `cw_is_label` | 用于人员标签;访客标签 **`NAME='访客'`** 对应 **`LABEL_ID=ed2dbab6d6234a7287106b80857c819e`**(该租户) |
| `information_schema.TABLE_CONSTRAINTS` | 上述组织表 **仅有 `PRIMARY KEY` / `UNIQUE`****未声明 FOREIGN KEY** |
| `cw-elevator-application.tenant_visitor_floor_policy` | 列与仓库 DDL 一致;示例租户 **`enabled=1`**`allow_zone_ids`**`605560545117995008`** |
### 6.2 INFORMATION_SCHEMA 模板(任意环境)
```sql
-- 组织库:核心表列一览
SELECT TABLE_NAME, COLUMN_NAME, DATA_TYPE
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'component-organization'
AND TABLE_NAME IN (
'cw_is_organization',
'cw_is_person',
'cw_is_person_organization_ref',
'cw_is_person_label_ref',
'cw_is_label'
)
ORDER BY TABLE_NAME, ORDINAL_POSITION;
-- 根节点与 BUSINESS_ID 是否相等(现场逐项核对)
SELECT ID, PARENT_ID, BUSINESS_ID, NAME
FROM cw_is_organization
WHERE BUSINESS_ID = '2524639890ba4f2cba9ba1a4eeaa4015'
ORDER BY ID
LIMIT 20;
-- 电梯库:策略表列
SELECT COLUMN_NAME, DATA_TYPE
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'cw-elevator-application'
AND TABLE_NAME IN ('tenant_visitor_floor_policy', 'image_rule_ref')
ORDER BY TABLE_NAME, ORDINAL_POSITION;
```
---
## 7. 文档索引(与本模型一致)
| 文档 | 用途 |
|------|------|
| [visitor-registration-business-flow.md](../testing/visitor-registration-business-flow.md) | 被访人 / 访客 / 楼层源码链路 |
| [visitor-registration-floor-validation.md](../testing/visitor-registration-floor-validation.md) | 测试矩阵与现场组织示例 |
| [tenant-visitor-default-floor-isolation.md](../testing/tenant-visitor-default-floor-isolation.md) | `business_id` 粒度与隔离边界 |
| [租户访客默认楼层-数据库配置阶段技术设计.md](../business/租户访客默认楼层-数据库配置阶段技术设计.md) | 求交语义与阶段范围 |
@@ -0,0 +1,75 @@
# cw-elevator-application v2.0.0 SQL与代码一致性审核记录
**审核目标**:确认发布规范涉及 SQL 脚本与当前代码逻辑一致,满足实施交付依据留档要求。
**审核范围**`tenant_visitor_floor_policy` 建表脚本、初始化脚本、访客派梯策略读取与求交流程。
**审核时间**`2026-04-29`
**审核人**`____________`
---
## 1. 审核过程
1. 审阅 SQL 脚本:
- `docs/sql/tenant_visitor_floor_policy.sql`
- `docs/sql/tenant_visitor_floor_policy_init_guangfa_fund.sql`
2. 审阅代码路径:
- `cw-elevator-application-service/.../PersonRuleServiceImpl#addVisitor`
- `cw-elevator-application-data/.../TenantVisitorFloorPolicyMapper.xml`
- `cw-elevator-application-data/.../TenantVisitorFloorPolicyDto`
3. 做场景对照:
- UC-01:调用方未传 `floorIds`
- UC-02:调用方已传 `floorIds`
- 策略缺失/无效 JSON/交集为空等异常分支
4. 形成一致性结论与风险提示,并纳入发布包。
---
## 2. 审核依据与结果
| 检查项 | SQL 依据 | 代码依据 | 结论 |
|------|----------|----------|------|
| 策略表字段是否齐全(business_id/policy_type/allow_zone_ids/building_id/enabled/policy_version | `tenant_visitor_floor_policy.sql` DDL 定义上述字段 | Mapper 查询并映射到 DTO 同名语义字段 | 一致 |
| 代码是否只读取“启用+租户默认+INTERSECT_ALLOWLIST”策略 | 初始化脚本使用 `policy_type='INTERSECT_ALLOWLIST'``building_id=NULL``enabled=1` | Mapper `WHERE enabled=1 AND policy_type='INTERSECT_ALLOWLIST' AND (building_id IS NULL OR building_id='')` | 一致 |
| allow_zone_ids 的数据格式是否匹配代码解析方式 | SQL 注释与初始化脚本均为 JSON 数组字符串(如 `["605560545117995008"]` | `parseAllowZoneIds` 使用 `JSON.parseArray(..., String.class)` 解析 | 一致 |
| 未传 floorIds 时是否执行“被访人楼层 ∩ 策略楼层” | 策略表提供 allowlist 数据来源 | `addVisitor``!callerProvidedFloors` 分支求交 | 一致 |
| 交集为空是否按规范失败 | 初始化脚本可构造交集为空场景 | `intersected.isEmpty()` 返回 `76260532` | 一致 |
| 已传 floorIds 是否跳过策略表 | SQL 与此分支无冲突 | `callerProvidedFloors=true` 时不进入策略读取分支 | 一致 |
---
## 3. 关键证据(摘录)
- 代码读取策略(启用、类型、租户默认)来自 `TenantVisitorFloorPolicyMapper.xml`
- 代码在 `PersonRuleServiceImpl#addVisitor` 中:
- `!callerProvidedFloors` 才读取被访人楼层与租户策略;
- `allow_zone_ids` 解析成功且非空才参与求交;
- 求交为空返回 `76260532`
- 调用方已传楼层时不走策略求交流程。
- 初始化脚本 `tenant_visitor_floor_policy_init_guangfa_fund.sql` 的字段取值与上述查询条件完全兼容。
---
## 4. 审核结论
**结论:通过。**
发布规范涉及的 SQL 脚本内容与当前代码逻辑一致,满足 v2.0.0 发布包“数据库脚本 + 功能升级说明 + 实施交付依据”要求。
---
## 5. 风险提示与建议
1. **唯一性治理风险(中)**
DDL 使用 `UNIQUE KEY (business_id, building_id)`,在 MySQL 下 `building_id=NULL` 可能存在多行;当前代码通过 `ORDER BY updated_at DESC, policy_version DESC LIMIT 1` 取最新一条,不阻断功能,但建议运维侧增加“每租户默认策略唯一”巡检。
2. **配置数据质量风险(中)**
`allow_zone_ids` 必须是电梯域 `zone_id` 字符串数组,若误填其它系统 UUID 会导致策略不生效或交集为空。
---
## 6. 签字确认
| 角色 | 姓名 | 日期 | 备注 |
|------|------|------|------|
| 审核人 | `____________` | `____` | `____` |
| 实施负责人 | `____________` | `____` | `____` |
| 甲方确认(可选) | `____________` | `____` | `____` |
+5 -2
View File
@@ -7,7 +7,10 @@
**对甲交付(业务表述与排期)**
- [甲方版本升级说明](./cw-elevator-application-v2.0.0-甲方版本升级说明.md)
- [升级计划(含夜间 · 周二/周三窗口)](./cw-elevator-application-v2.0.0-升级计划.md)
- [升级计划(含夜间 · 周二/周三窗口)](./cw-elevator-application-v2.0.0-升级计划.md)
- [实施交付清单(实施方内部与对甲交付核对)](./cw-elevator-application-v2.0.0-实施交付清单.md)
- [实施验收记录模板(上线当晚记录)](./cw-elevator-application-v2.0.0-实施验收记录模板.md)
- [SQL与代码一致性审核记录(发布规范走查依据)](./cw-elevator-application-v2.0.0-SQL与代码一致性审核记录.md)
---
@@ -20,7 +23,7 @@ export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
./scripts/release-cw-elevator-application.sh
```
输出:`**maven-cw-elevator-application/releases/v2.0.0/**`,含 `jar``ddl/``版本升级说明书.md``甲方版本升级说明.md``升级计划.md``发布说明.md``BUILD_MANIFEST.txt`
输出:`**maven-cw-elevator-application/releases/v2.0.0/**`,含 `jar``ddl/`(建表与初始化脚本)、`config/`(生产基线属性文件)`版本升级说明书.md``甲方版本升级说明.md``升级计划.md``实施交付清单.md``实施验收记录模板.md``SQL与代码一致性审核记录.md``发布说明.md``BUILD_MANIFEST.txt`
---
@@ -0,0 +1,60 @@
# cw-elevator-application v2.0.0 实施交付清单
**用途**:用于正式发布交付前后的材料核对,满足“发布包 + 数据库脚本 + 升级说明 + 实施验收记录”闭环。
---
## 1. 发布包文件清单
- [ ] `cw-elevator-application-2.0.0.jar`
- [ ] `ddl/tenant_visitor_floor_policy.sql`(建表脚本)
- [ ] `ddl/tenant_visitor_floor_policy_init_guangfa_fund.sql`(广发基金初始化示例/可直接执行)
- [ ] `版本升级说明书.md`(技术实施口径)
- [ ] `甲方版本升级说明.md`(业务口径)
- [ ] `升级计划.md`(实施窗口与回滚安排)
- [ ] `实施验收记录模板.md`(上线当晚记录)
- [ ] `BUILD_MANIFEST.txt`(构建时间、分支、提交号)
---
## 2. 数据库变更交付项
- [ ] DBA 已确认目标库与执行窗口
- [ ] 已备份目标库(全库/指定库按现场规范)
- [ ] 已执行 `tenant_visitor_floor_policy.sql`
- [ ] 已执行或评审 `tenant_visitor_floor_policy_init_guangfa_fund.sql`
- [ ] 已确认 `allow_zone_ids` 使用的是电梯库 `zone_id`(非其它系统 UUID
- [ ] 已留存 SQL 执行记录(执行人、时间、结果)
---
## 3. 应用部署交付项
- [ ] 上线前已保存旧版 JAR 回滚包
- [ ] 已按窗口替换为 `cw-elevator-application-2.0.0.jar`
- [ ] 应用启动日志无严重报错
- [ ] 关键接口健康检查通过(含 `add/visitor` 主链路)
- [ ] 监控观察窗口内无持续异常
---
## 4. 验收交付项
- [ ] UC-01:未传 `floorIds` 且策略启用时,楼层为 `floorList ∩ allow_zone_ids`
- [ ] UC-01:无交集时返回 `76260532`
- [ ] UC-02:显式传 `floorIds` 时不受策略表影响
- [ ] 未启用策略租户行为与升级前一致
- [ ] 已按《实施验收记录模板》完成签字/邮件留档
---
## 5. 交付确认信息
| 项目 | 内容 |
|------|------|
| 实施项目 | cw-elevator-application v2.0.0 |
| 实施日期 | `____年____月____日` |
| 甲方确认人 | `____________` |
| 乙方实施人 | `____________` |
| 文档留存路径 | `____________` |
@@ -0,0 +1,73 @@
# cw-elevator-application v2.0.0 实施验收记录模板
**用途**:实施当晚记录数据库执行、应用部署、业务验收和回滚判定,作为交付归档依据。
---
## 1. 基本信息
| 项目 | 内容 |
|------|------|
| 项目名称 | 智慧电梯 / 访客派梯系统 |
| 发布版本 | v2.0.0 |
| 实施日期 | `____年____月____日` |
| 实施时段 | `____:____` - `____:____` |
| 环境 | 生产 / 预生产(圈选) |
| 实施负责人 | `____________` |
| 甲方联系人 | `____________` |
---
## 2. 数据库执行记录
| 序号 | 脚本 | 执行时间 | 执行人 | 结果 | 备注 |
|------|------|----------|--------|------|------|
| 1 | tenant_visitor_floor_policy.sql | `____` | `____` | 成功/失败 | `____` |
| 2 | tenant_visitor_floor_policy_init_guangfa_fund.sql | `____` | `____` | 成功/失败 | `____` |
**异常记录**`______________________________________________`
---
## 3. 应用发布记录
| 项目 | 记录 |
|------|------|
| 上线前版本 | `____________` |
| 上线后版本 | `cw-elevator-application-2.0.0.jar` |
| 启停方式 | `____________` |
| 服务恢复时间 | `____________` |
| 日志健康检查 | 通过 / 不通过 |
| 监控观察结论 | 正常 / 异常(说明) |
---
## 4. 验收结果记录
| 用例 | 期望 | 实际 | 结论 |
|------|------|------|------|
| UC-01(未传 floorIds,策略启用) | floorList 与 allow_zone_ids 求交 | `____` | 通过/不通过 |
| UC-01(交集为空) | 返回 `76260532` | `____` | 通过/不通过 |
| UC-02(显式传 floorIds | 不受策略表影响 | `____` | 通过/不通过 |
| 无策略租户回归 | 行为与升级前一致 | `____` | 通过/不通过 |
---
## 5. 回滚判定
- [ ] 无需回滚,发布成功
- [ ] 需要回滚应用(原因:`________________`
- [ ] 需要回滚数据/策略(原因:`________________`
回滚执行记录(如发生):`______________________________________________`
---
## 6. 签字确认
| 角色 | 姓名 | 日期 | 备注 |
|------|------|------|------|
| 甲方确认 | `____________` | `____` | `____` |
| 乙方实施 | `____________` | `____` | `____` |
| 乙方复核 | `____________` | `____` | `____` |
@@ -0,0 +1,75 @@
# cw-elevator-application v2.0.6 SQL与代码一致性审核记录
**审核目标**:确认发布规范涉及 SQL 脚本与当前代码逻辑一致,满足实施交付依据留档要求。
**审核范围**`tenant_visitor_floor_policy` 建表脚本、初始化脚本、访客派梯策略读取与求交流程。
**审核时间**`2026-04-29`
**审核人**`____________`
---
## 1. 审核过程
1. 审阅 SQL 脚本:
- `docs/sql/tenant_visitor_floor_policy.sql`
- `docs/sql/tenant_visitor_floor_policy_init_guangfa_fund.sql`
2. 审阅代码路径:
- `cw-elevator-application-service/.../PersonRuleServiceImpl#addVisitor`
- `cw-elevator-application-data/.../TenantVisitorFloorPolicyMapper.xml`
- `cw-elevator-application-data/.../TenantVisitorFloorPolicyDto`
3. 做场景对照:
- UC-01:调用方未传 `floorIds`
- UC-02:调用方已传 `floorIds`
- 策略缺失/无效 JSON/交集为空等异常分支
4. 形成一致性结论与风险提示,并纳入发布包。
---
## 2. 审核依据与结果
| 检查项 | SQL 依据 | 代码依据 | 结论 |
|------|----------|----------|------|
| 策略表字段是否齐全(business_id/policy_type/allow_zone_ids/building_id/enabled/policy_version | `tenant_visitor_floor_policy.sql` DDL 定义上述字段 | Mapper 查询并映射到 DTO 同名语义字段 | 一致 |
| 代码是否只读取“启用+租户默认+INTERSECT_ALLOWLIST”策略 | 初始化脚本使用 `policy_type='INTERSECT_ALLOWLIST'``building_id=NULL``enabled=1` | Mapper `WHERE enabled=1 AND policy_type='INTERSECT_ALLOWLIST' AND (building_id IS NULL OR building_id='')` | 一致 |
| allow_zone_ids 的数据格式是否匹配代码解析方式 | SQL 注释与初始化脚本均为 JSON 数组字符串(如 `["605560545117995008"]` | `parseAllowZoneIds` 使用 `JSON.parseArray(..., String.class)` 解析 | 一致 |
| 未传 floorIds 时是否执行“被访人楼层 ∩ 策略楼层” | 策略表提供 allowlist 数据来源 | `addVisitor``!callerProvidedFloors` 分支求交 | 一致 |
| 交集为空是否按规范失败 | 初始化脚本可构造交集为空场景 | `intersected.isEmpty()` 返回 `76260532` | 一致 |
| 已传 floorIds 是否跳过策略表 | SQL 与此分支无冲突 | `callerProvidedFloors=true` 时不进入策略读取分支 | 一致 |
---
## 3. 关键证据(摘录)
- 代码读取策略(启用、类型、租户默认)来自 `TenantVisitorFloorPolicyMapper.xml`
- 代码在 `PersonRuleServiceImpl#addVisitor` 中:
- `!callerProvidedFloors` 才读取被访人楼层与租户策略;
- `allow_zone_ids` 解析成功且非空才参与求交;
- 求交为空返回 `76260532`
- 调用方已传楼层时不走策略求交流程。
- 初始化脚本 `tenant_visitor_floor_policy_init_guangfa_fund.sql` 的字段取值与上述查询条件完全兼容。
---
## 4. 审核结论
**结论:通过。**
发布规范涉及的 SQL 脚本内容与当前代码逻辑一致,满足 v2.0.6 发布包“数据库脚本 + 功能升级说明 + 实施交付依据”要求。
---
## 5. 风险提示与建议
1. **唯一性治理风险(中)**
DDL 使用 `UNIQUE KEY (business_id, building_id)`,在 MySQL 下 `building_id=NULL` 可能存在多行;当前代码通过 `ORDER BY updated_at DESC, policy_version DESC LIMIT 1` 取最新一条,不阻断功能,但建议运维侧增加“每租户默认策略唯一”巡检。
2. **配置数据质量风险(中)**
`allow_zone_ids` 必须是电梯域 `zone_id` 字符串数组,若误填其它系统 UUID 会导致策略不生效或交集为空。
---
## 6. 签字确认
| 角色 | 姓名 | 日期 | 备注 |
|------|------|------|------|
| 审核人 | `____________` | `____` | `____` |
| 实施负责人 | `____________` | `____` | `____` |
| 甲方确认(可选) | `____________` | `____` | `____` |
@@ -0,0 +1,106 @@
# cw-elevator-application v2.0.6 升级计划
**项目名称**(可填):智慧电梯 / 访客派梯系统升级
**版本**v2.0.6
**计划性质**:执行级排期草案,**具体日期、起止时刻以与甲方书面/邮件确认为准**。
---
## 1. 升级目标
完成电梯派梯应用 **v2.0.6** 上线,启用**租户访客固定访问楼层**能力所需的应用与数据库对象;按业务需要为指定租户配置策略并完成验收。
---
## 2. 计划时间窗口(夜间 · 暂定周二、周三)
| 窗口 | 意向安排 | 建议内容(可合并或调整) |
|------|-----------|----------------------------|
| **第一次:周二晚间** | 夜间低峰段,具体 **HH:MMHH:MM** 待定 | 环境检查、数据库备份、执行 **DDL**(新建策略表)、(可选)预发布验证、必要时准备回滚包与检查单 |
| **第二次:周三晚间** | 夜间低峰段,具体 **HH:MMHH:MM** 待定 | 部署新版本 **JAR**、滚动/重启应用、按需 **INSERT** 租户策略数据、业务联调与验收、监控与值守 |
**说明**
- 若贵方现场要求**一个晚上完成全部步骤**,可将 DDL 与部署**合并在同一晚间窗口**执行,本表仅体现「周二、周三两晚」的**当前意向拆分**,最终以确认单为准。
- 两次窗口建议**间隔至少数小时至一个工作日**,便于第一次变更后观察库表与低风险项;若合并为单次窗口,须在计划单中注明**连续操作顺序与回滚点**。
**待确认栏**(实施时填写):
- 周二实施日期:`____年____月____日`,时段: `____ : ____` `____ : ____`
- 周三实施日期:`____年____月____日`,时段: `____ : ____` `____ : ____`
- 甲方现场联系人: `____________` 乙方/实施负责人: `____________`
---
## 3. 影响范围与沟通
| 项目 | 说明 |
|------|------|
| 影响系统 | 电梯派梯相关应用(`cw-elevator-application`)及同一业务库。 |
| 用户感知 | 应用重启期间可能出现短时派梯接口失败;策略误配可能导致部分访客路径失败,需按验收清单核对。 |
| 通知范围 | 建议提前通知:物业/客服、前台与访客登记、安保与梯控相关值班(按项目实际 roster 确定)。 |
---
## 4. 前置条件(升级前)
- [ ] 已与甲方确认 **周二 / 周三** 夜间窗口。
- [ ] 取得 **v2.0.6** 发布包(含 `jar``ddl/tenant_visitor_floor_policy.sql`、说明书)。
- [ ] 目标环境 **JDK 版本**符合实施方要求(与构建说明一致,一般为 JDK 8)。
- [ ] 数据库已做**备份**(全库或按运维规范),并可从发布包定位 DDL。
- [ ] 明确需启用「固定访客楼层」的租户列表及**允许区域**配置(若不启用,可跳过策略数据录入,行为与升级前一致)。
- [ ] 回滚包:保留**当前线上 JAR** 备份与回滚步骤(见下文)。
---
## 5. 实施步骤(建议顺序)
### 5.1 周二晚间(或首个窗口)
1. 备份数据库。
2. 执行 `tenant_visitor_floor_policy.sql``CREATE TABLE IF NOT EXISTS`,可重复执行需与 DBA 确认)。
3. (可选)在测试/预发环境先执行一遍并验证。
4. 记录执行人、时间与结果。
### 5.2 周三晚间(或第二个窗口 / 同晚续作)
1. 停止或滚动发布应用(按现网规范)。
2. 替换为 `cw-elevator-application-2.0.6.jar` 并启动。
3. 按业务需求对需启用的租户执行策略 **INSERT**`enabled=1``allow_zone_ids` 等为合法 JSON 等,字段级以技术说明书为准)。
4. 抽样验证:未传显式楼层时的访客派梯、租户策略开/关、与组织楼层无交集时的失败提示等。
5. 观察监控与日志,**值守**至约定结束时间。
*若合并为单次窗口:按「备份 → DDL → 部署 JAR → 策略数据 → 验收」顺序连续执行,并预留回滚决策时间。*
---
## 6. 验收要点(摘要)
- 未配置或未启用策略时:与升级前行为一致。
- 已启用策略且业务走「未显式指定楼层」路径:访客可去楼层为**组织允许**与**租户允许**的**交集**。
- 交集为空时:接口返回预期业务错误(技术码见实施方说明书)。
- 第三方已显式传入楼层的路径:不因本策略表改变原逻辑。
---
## 7. 回滚预案
| 场景 | 建议动作 |
|------|-----------|
| 应用异常 | 回退至上一版本 JAR;数据库新表若已存在且旧应用不读该表,通常可继续服务;与实施方确认。 |
| 策略配置错误 | 优先**停用或修正策略行**,避免大规模回滚应用。 |
| 必须撤表 | 仅在评估无依赖后由 DBA 执行删表;**高风险**,需书面确认。 |
---
## 8. 交付物核对
- [ ] `cw-elevator-application-2.0.6.jar`
- [ ] `ddl/tenant_visitor_floor_policy.sql`
- [ ] 《版本升级说明书》(实施/技术)
- [ ] 本《甲方版本升级说明》(如已作为对甲交付)
- [ ] 本《升级计划》(双方确认签字/邮件留档)
---
**文档状态**:草案;**时间点为暂定周二、周三晚间**,正式实施前请更新「待确认栏」并留存确认记录。
@@ -0,0 +1,32 @@
# cw-elevator-application v2.0.6 发布索引
本版本**功能升级说明**已单独成文,**仅覆盖「租户访客固定访问楼层」**及配套数据库 DDL,见:
**[cw-elevator-application-v2.0.6-版本升级说明书](./cw-elevator-application-v2.0.6-版本升级说明书.md)**
**对甲交付(业务表述与排期)**
- [甲方版本升级说明](./cw-elevator-application-v2.0.6-甲方版本升级说明.md)
- [升级计划(含夜间 · 周二/周三窗口)](./cw-elevator-application-v2.0.6-升级计划.md)
- [实施交付清单(实施方内部与对甲交付核对)](./cw-elevator-application-v2.0.6-实施交付清单.md)
- [实施验收记录模板(上线当晚记录)](./cw-elevator-application-v2.0.6-实施验收记录模板.md)
- [SQL与代码一致性审核记录(发布规范走查依据)](./cw-elevator-application-v2.0.6-SQL与代码一致性审核记录.md)
---
## 一键构建与发布目录
在仓库根目录、**JDK 8** 下执行:
```bash
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
./scripts/release-cw-elevator-application.sh 2.0.6
```
输出:**`maven-cw-elevator-application/releases/cw-elevator-application-V2.0.6.<YYYYMMDD>/`**(目录名含构建日期,与 `cw-elevator-application-V1.0.0.20211103` 命名风格一致;可用环境变量 **`RELEASE_DATE_LABEL`** 指定日期),含 `cw-elevator-application-2.0.6.jar``ddl/`、发布根目录下的 `bootstrap.properties` / `application*.properties`(与星中心/V1 同层摆放,**无额外 `config/` 子目录**)、`start.sh` / `stop.sh` / `cw-elevator-application.service`(路径占位符需现场替换)、`run.sh``common-java.sh`、**`collect_elevator_runtime_evidence.sh`**(根目录,现场只读证据采集)、`版本升级说明书.md`、甲方与实施类 Markdown、`BUILD_MANIFEST.txt`;默认另生成 **`releases/cw-elevator-application-V2.0.6.<YYYYMMDD>.zip`**(设 `RELEASE_MAKE_ZIP=0` 可跳过)。
---
## Git 与大文件
`maven-cw-elevator-application/.gitignore` 忽略 `**releases/**/*.jar**`;**DDL 与说明书**可提交;可执行 JAR 请通过制品库或制品服务器分发。
@@ -0,0 +1,60 @@
# cw-elevator-application v2.0.6 实施交付清单
**用途**:用于正式发布交付前后的材料核对,满足“发布包 + 数据库脚本 + 升级说明 + 实施验收记录”闭环。
---
## 1. 发布包文件清单
- [ ] `cw-elevator-application-2.0.6.jar`
- [ ] `ddl/tenant_visitor_floor_policy.sql`(建表脚本)
- [ ] `ddl/tenant_visitor_floor_policy_init_guangfa_fund.sql`(广发基金初始化示例/可直接执行)
- [ ] `版本升级说明书.md`(技术实施口径)
- [ ] `甲方版本升级说明.md`(业务口径)
- [ ] `升级计划.md`(实施窗口与回滚安排)
- [ ] `实施验收记录模板.md`(上线当晚记录)
- [ ] `BUILD_MANIFEST.txt`(构建时间、分支、提交号)
---
## 2. 数据库变更交付项
- [ ] DBA 已确认目标库与执行窗口
- [ ] 已备份目标库(全库/指定库按现场规范)
- [ ] 已执行 `tenant_visitor_floor_policy.sql`
- [ ] 已执行或评审 `tenant_visitor_floor_policy_init_guangfa_fund.sql`
- [ ] 已确认 `allow_zone_ids` 使用的是电梯库 `zone_id`(非其它系统 UUID
- [ ] 已留存 SQL 执行记录(执行人、时间、结果)
---
## 3. 应用部署交付项
- [ ] 上线前已保存旧版 JAR 回滚包
- [ ] 已按窗口替换为 `cw-elevator-application-2.0.6.jar`
- [ ] 应用启动日志无严重报错
- [ ] 关键接口健康检查通过(含 `add/visitor` 主链路)
- [ ] 监控观察窗口内无持续异常
---
## 4. 验收交付项
- [ ] UC-01:未传 `floorIds` 且策略启用时,楼层为 `floorList ∩ allow_zone_ids`
- [ ] UC-01:无交集时返回 `76260532`
- [ ] UC-02:显式传 `floorIds` 时不受策略表影响
- [ ] 未启用策略租户行为与升级前一致
- [ ] 已按《实施验收记录模板》完成签字/邮件留档
---
## 5. 交付确认信息
| 项目 | 内容 |
|------|------|
| 实施项目 | cw-elevator-application v2.0.6 |
| 实施日期 | `____年____月____日` |
| 甲方确认人 | `____________` |
| 乙方实施人 | `____________` |
| 文档留存路径 | `____________` |
@@ -0,0 +1,73 @@
# cw-elevator-application v2.0.6 实施验收记录模板
**用途**:实施当晚记录数据库执行、应用部署、业务验收和回滚判定,作为交付归档依据。
---
## 1. 基本信息
| 项目 | 内容 |
|------|------|
| 项目名称 | 智慧电梯 / 访客派梯系统 |
| 发布版本 | v2.0.6 |
| 实施日期 | `____年____月____日` |
| 实施时段 | `____:____` - `____:____` |
| 环境 | 生产 / 预生产(圈选) |
| 实施负责人 | `____________` |
| 甲方联系人 | `____________` |
---
## 2. 数据库执行记录
| 序号 | 脚本 | 执行时间 | 执行人 | 结果 | 备注 |
|------|------|----------|--------|------|------|
| 1 | tenant_visitor_floor_policy.sql | `____` | `____` | 成功/失败 | `____` |
| 2 | tenant_visitor_floor_policy_init_guangfa_fund.sql | `____` | `____` | 成功/失败 | `____` |
**异常记录**`______________________________________________`
---
## 3. 应用发布记录
| 项目 | 记录 |
|------|------|
| 上线前版本 | `____________` |
| 上线后版本 | `cw-elevator-application-2.0.6.jar` |
| 启停方式 | `____________` |
| 服务恢复时间 | `____________` |
| 日志健康检查 | 通过 / 不通过 |
| 监控观察结论 | 正常 / 异常(说明) |
---
## 4. 验收结果记录
| 用例 | 期望 | 实际 | 结论 |
|------|------|------|------|
| UC-01(未传 floorIds,策略启用) | floorList 与 allow_zone_ids 求交 | `____` | 通过/不通过 |
| UC-01(交集为空) | 返回 `76260532` | `____` | 通过/不通过 |
| UC-02(显式传 floorIds | 不受策略表影响 | `____` | 通过/不通过 |
| 无策略租户回归 | 行为与升级前一致 | `____` | 通过/不通过 |
---
## 5. 回滚判定
- [ ] 无需回滚,发布成功
- [ ] 需要回滚应用(原因:`________________`
- [ ] 需要回滚数据/策略(原因:`________________`
回滚执行记录(如发生):`______________________________________________`
---
## 6. 签字确认
| 角色 | 姓名 | 日期 | 备注 |
|------|------|------|------|
| 甲方确认 | `____________` | `____` | `____` |
| 乙方实施 | `____________` | `____` | `____` |
| 乙方复核 | `____________` | `____` | `____` |
@@ -0,0 +1,112 @@
# cw-elevator-application v2.0.6 版本升级说明书
**适用范围**:本说明**仅**描述 **v2.0.6** 中与 **租户访客固定访问楼层**(租户级允许区域与组织 `floorList` 求交)相关的升级内容,不含其它性能优化或通用发布项。
**应用制品**`cw-elevator-application-2.0.6.jar`Spring Boot 可执行 fat JAR)。
---
## 1. 功能概述
**访客派梯** 接口 **`add/visitor`**(实现类 `PersonRuleServiceImpl#addVisitor`)中,当调用方 **未传入非空 `floorIds`**(业务流程 **UC-01**:按被访人组织侧楼层推导)时:
1. 服务仍先通过 **`person/detail`** 取得被访人 **`floorList`**(与升级前一致)。
2. **新增**:若数据库中存在**启用**的租户策略行,且 **`allow_zone_ids`** 解析为非空 JSON 数组,则最终生效楼层为
**`effectiveFloors = floorList ∩ allow_zone_ids`**(顺序保持 **`floorList`** 原有顺序)。
3. 若交集 **为空**,接口返回失败码 **`76260532`**(不允许静默放宽到其它楼层)。
4. 若无策略表、无启用行、`allow_zone_ids` 为空或 JSON 无效:行为与升级前一致,使用 **`floorList` 全集**。
当调用方 **已传入非空 `floorIds`**(**UC-02**,第三方显式指定楼层)时:**不读取**策略表,**不对入参求交**,与升级前一致。
> **产品表述**:「固定访问楼层」在本阶段由租户管理员通过 **`allow_zone_ids`** 声明**允许开放给访客派梯的区域(zoneId)集合**;在 UC-01 路径下与组织返回的 **`floorList`** 取交集,从而将访客权限**收敛**到既有「被访人可去楼层」与「租户允许楼层」的双重约束内。
---
## 2. 涉及的数据库变更
### 2.1 变更类型
| 类型 | 对象 |
|------|------|
| **新增表** | `tenant_visitor_floor_policy` |
**执行库**:与电梯应用 **同一数据源**MySQL/InnoDB,与现有派梯业务库一致)。
### 2.2 表用途(摘要)
| 字段 | 含义 |
|------|------|
| `business_id` | 租户/机构 ID |
| `policy_type` | 本阶段固定 **`INTERSECT_ALLOWLIST`** |
| `allow_zone_ids` | **TEXT**,存 **JSON 数组**字符串,元素为允许访客派梯的 **zoneId** |
| `building_id` | 租户级默认策略填 **NULL**(预留楼栋维) |
| `enabled` | **1** 启用 / **0** 停用 |
| `policy_version` | 配置版本号(审计) |
唯一约束 **`uk_biz_building (business_id, building_id)`**:同一租户、租户级策略(`building_id` 为空)**建议仅维护一行**,避免多行时查询仅命中「最新一条」与运维预期不符。
### 2.3 DDL 脚本位置
| 用途 | 仓库内路径 |
|------|------------|
| **权威 DDL** | `docs/sql/tenant_visitor_floor_policy.sql` |
**发布包内副本**:随 v2.0.6 发布目录一并下发,路径为 **`ddl/tenant_visitor_floor_policy.sql`**(与根目录 JAR 同级下的 `ddl` 子目录)。
脚本内容为 **`CREATE TABLE IF NOT EXISTS`**,在未建表环境可重复执行;**不含**业务数据 `INSERT`,上线需按租户配置自行 **`INSERT`** 策略行。
### 2.4 上线执行顺序(建议)
1. **备份**当前电梯应用库(至少包含待变更库的全库或相关表备份策略)。
2. 在目标库执行 **`ddl/tenant_visitor_floor_policy.sql`**(或直接使用仓库 `docs/sql` 下同源文件)。
3. 对需启用策略的租户 **`INSERT`** 一行(示例字段:`business_id``policy_type='INTERSECT_ALLOWLIST'``allow_zone_ids` 为合法 JSON 数组、`enabled=1``building_id`**NULL**)。
4. 部署 **`cw-elevator-application-2.0.6.jar`** 并滚动重启应用。
5. 按 §4 做 **UC-01 / UC-02** 验收。
### 2.5 回滚说明
- **仅回滚应用**:还原旧版本 JAR 后,若库中**已存在**策略行且仍为 **enabled=1**,旧版本应用**通常不读取**该表,行为与历史一致;表结构可保留。
- **回滚数据库**:若需删除表(谨慎),在确认无其它依赖后执行 **`DROP TABLE tenant_visitor_floor_policy`**;请在变更窗口与 DBA 确认。
---
## 3. 行为与错误码(验收)
| 场景 | `floorIds` | 策略库 | 期望 |
|------|------------|--------|------|
| UC-01 基线 | 空/未传 | 无启用行或 allow 空/无效 | 使用组织 **`floorList` 全集**(与升级前一致) |
| UC-01 + 固定楼层 | 空/未传 | 有启用行且 allow 非空 | **`floorList ∩ allow`**(保序) |
| 无交集 | 空/未传 | allow 与 `floorList` 无交集 | **`76260532`** |
| 被访人无楼层 | 空/未传 | 任意 | **`76260531`** |
| UC-02 | **非空** | 任意 | **不读策略表**,按请求楼层处理 |
---
## 4. 发布包目录结构(v2.0.6
执行仓库根目录 **`./scripts/release-cw-elevator-application.sh 2.0.6`** 后,输出目录为(名称含构建日期 `<YYYYMMDD>`,与历史运行包 **`cw-elevator-application-V1.0.0.20211103`** 同构;可用环境变量 **`RELEASE_DATE_LABEL`** 固定日期):
**`maven-cw-elevator-application/releases/cw-elevator-application-V2.0.6.<YYYYMMDD>/`**
| 文件/目录 | 说明 |
|-----------|------|
| `cw-elevator-application-2.0.6.jar` | 可执行应用 |
| `bootstrap.properties``application*.properties` | 与 JAR 同层(**不**再使用 `config/` 子目录重复存放) |
| `ddl/tenant_visitor_floor_policy.sql` | 与本功能相关的 **唯一 DDL**(与 `docs/sql` 同源) |
| `版本升级说明书.md` | 本文件副本(便于随包交付) |
| `BUILD_MANIFEST.txt` | 构建时间、JDK、`git` 修订号 |
---
## 5. 参考文档(仓库内)
| 文档 | 路径 |
|------|------|
| 数据库阶段变更记录 | `docs/business/租户访客默认楼层-数据库阶段变更记录.md` |
| 数据库配置阶段技术设计 | `docs/business/租户访客默认楼层-数据库配置阶段技术设计.md` |
| 技术产品方案 | `docs/business/租户访客默认楼层技术产品方案.md` |
| 访客注册与派梯楼层走查 | `docs/business/访客注册与派梯楼层业务流程走查.md` |
---
**文档版本**:与制品 **`cw-elevator-application-2.0.6`** 对齐;若仅升级文档而不改代码,请以 **`BUILD_MANIFEST.txt`** 中构建时间为准。
@@ -0,0 +1,34 @@
# 电梯派梯应用 v2.0.6 — 版本升级说明(广发基金)
**制品**`cw-elevator-application-2.0.6.jar`。技术细节、验收码与脚本位置见同目录《版本升级说明书》。
---
## 本次升级做什么
针对**广发基金**租户:访客走常见派梯路径(接口**未单独传楼层**)时,系统在「被访人所在单位给的可去楼层」基础上,再按**广发基金侧配置的允许区域**做一次收紧,两边**都满足**的楼层才能派梯。这样可以把访客权限收在比如固定接待层,而员工本人仍可按组织权限去多层办公。
广发基金若**未配置或未启用**该策略,行为与现在一致。
---
## 上线要动什么
- 换新版应用包。
- 库里**多一张策略表**(脚本在发布包 `ddl/` 下);表里为广发基金写入**一行**启用策略即可,允许区域(如接待层对应的 zone)由业务与实施定稿。
其它租户不配策略则**不受影响**。
---
## 对您这边的影响
- **时间**:安排在**夜间**,具体周二/周三窗口见《升级计划》。
- **中断**:重启应用时派梯接口可能**短暂**不可用,一般会控制在很短时间。
- **配合**:指定一个对接人;确认广发基金侧要开放的**访客可达区域/楼层**(与前台、接待流程对齐);上线后若有异常派梯请及时反馈。
---
## 出问题怎么办
应用可先退回上一版包;策略数据可单独改/停,不一定整库回滚。细则见《升级计划》。
@@ -0,0 +1,75 @@
# cw-elevator-application v2.0.7 SQL与代码一致性审核记录
**审核目标**:确认发布规范涉及 SQL 脚本与当前代码逻辑一致,满足实施交付依据留档要求。
**审核范围**`tenant_visitor_floor_policy` 建表脚本、初始化脚本、访客派梯策略读取与求交流程。
**审核时间**`2026-04-29`
**审核人**`____________`
---
## 1. 审核过程
1. 审阅 SQL 脚本:
- `docs/sql/tenant_visitor_floor_policy.sql`
- `docs/sql/tenant_visitor_floor_policy_init_guangfa_fund.sql`
2. 审阅代码路径:
- `cw-elevator-application-service/.../PersonRuleServiceImpl#addVisitor`
- `cw-elevator-application-data/.../TenantVisitorFloorPolicyMapper.xml`
- `cw-elevator-application-data/.../TenantVisitorFloorPolicyDto`
3. 做场景对照:
- UC-01:调用方未传 `floorIds`
- UC-02:调用方已传 `floorIds`
- 策略缺失/无效 JSON/交集为空等异常分支
4. 形成一致性结论与风险提示,并纳入发布包。
---
## 2. 审核依据与结果
| 检查项 | SQL 依据 | 代码依据 | 结论 |
|------|----------|----------|------|
| 策略表字段是否齐全(business_id/policy_type/allow_zone_ids/building_id/enabled/policy_version | `tenant_visitor_floor_policy.sql` DDL 定义上述字段 | Mapper 查询并映射到 DTO 同名语义字段 | 一致 |
| 代码是否只读取“启用+租户默认+INTERSECT_ALLOWLIST”策略 | 初始化脚本使用 `policy_type='INTERSECT_ALLOWLIST'``building_id=NULL``enabled=1` | Mapper `WHERE enabled=1 AND policy_type='INTERSECT_ALLOWLIST' AND (building_id IS NULL OR building_id='')` | 一致 |
| allow_zone_ids 的数据格式是否匹配代码解析方式 | SQL 注释与初始化脚本均为 JSON 数组字符串(如 `["605560545117995008"]` | `parseAllowZoneIds` 使用 `JSON.parseArray(..., String.class)` 解析 | 一致 |
| 未传 floorIds 时是否执行“被访人楼层 ∩ 策略楼层” | 策略表提供 allowlist 数据来源 | `addVisitor``!callerProvidedFloors` 分支求交 | 一致 |
| 交集为空是否按规范失败 | 初始化脚本可构造交集为空场景 | `intersected.isEmpty()` 返回 `76260532` | 一致 |
| 已传 floorIds 是否跳过策略表 | SQL 与此分支无冲突 | `callerProvidedFloors=true` 时不进入策略读取分支 | 一致 |
---
## 3. 关键证据(摘录)
- 代码读取策略(启用、类型、租户默认)来自 `TenantVisitorFloorPolicyMapper.xml`
- 代码在 `PersonRuleServiceImpl#addVisitor` 中:
- `!callerProvidedFloors` 才读取被访人楼层与租户策略;
- `allow_zone_ids` 解析成功且非空才参与求交;
- 求交为空返回 `76260532`
- 调用方已传楼层时不走策略求交流程。
- 初始化脚本 `tenant_visitor_floor_policy_init_guangfa_fund.sql` 的字段取值与上述查询条件完全兼容。
---
## 4. 审核结论
**结论:通过。**
发布规范涉及的 SQL 脚本内容与当前代码逻辑一致,满足 v2.0.7 发布包“数据库脚本 + 功能升级说明 + 实施交付依据”要求。
---
## 5. 风险提示与建议
1. **唯一性治理风险(中)**
DDL 使用 `UNIQUE KEY (business_id, building_id)`,在 MySQL 下 `building_id=NULL` 可能存在多行;当前代码通过 `ORDER BY updated_at DESC, policy_version DESC LIMIT 1` 取最新一条,不阻断功能,但建议运维侧增加“每租户默认策略唯一”巡检。
2. **配置数据质量风险(中)**
`allow_zone_ids` 必须是电梯域 `zone_id` 字符串数组,若误填其它系统 UUID 会导致策略不生效或交集为空。
---
## 6. 签字确认
| 角色 | 姓名 | 日期 | 备注 |
|------|------|------|------|
| 审核人 | `____________` | `____` | `____` |
| 实施负责人 | `____________` | `____` | `____` |
| 甲方确认(可选) | `____________` | `____` | `____` |
@@ -0,0 +1,106 @@
# cw-elevator-application v2.0.7 升级计划
**项目名称**(可填):智慧电梯 / 访客派梯系统升级
**版本**v2.0.7
**计划性质**:执行级排期草案,**具体日期、起止时刻以与甲方书面/邮件确认为准**。
---
## 1. 升级目标
完成电梯派梯应用 **v2.0.7** 上线,启用**租户访客固定访问楼层**能力所需的应用与数据库对象;按业务需要为指定租户配置策略并完成验收。
---
## 2. 计划时间窗口(夜间 · 暂定周二、周三)
| 窗口 | 意向安排 | 建议内容(可合并或调整) |
|------|-----------|----------------------------|
| **第一次:周二晚间** | 夜间低峰段,具体 **HH:MMHH:MM** 待定 | 环境检查、数据库备份、执行 **DDL**(新建策略表)、(可选)预发布验证、必要时准备回滚包与检查单 |
| **第二次:周三晚间** | 夜间低峰段,具体 **HH:MMHH:MM** 待定 | 部署新版本 **JAR**、滚动/重启应用、按需 **INSERT** 租户策略数据、业务联调与验收、监控与值守 |
**说明**
- 若贵方现场要求**一个晚上完成全部步骤**,可将 DDL 与部署**合并在同一晚间窗口**执行,本表仅体现「周二、周三两晚」的**当前意向拆分**,最终以确认单为准。
- 两次窗口建议**间隔至少数小时至一个工作日**,便于第一次变更后观察库表与低风险项;若合并为单次窗口,须在计划单中注明**连续操作顺序与回滚点**。
**待确认栏**(实施时填写):
- 周二实施日期:`____年____月____日`,时段: `____ : ____` `____ : ____`
- 周三实施日期:`____年____月____日`,时段: `____ : ____` `____ : ____`
- 甲方现场联系人: `____________` 乙方/实施负责人: `____________`
---
## 3. 影响范围与沟通
| 项目 | 说明 |
|------|------|
| 影响系统 | 电梯派梯相关应用(`cw-elevator-application`)及同一业务库。 |
| 用户感知 | 应用重启期间可能出现短时派梯接口失败;策略误配可能导致部分访客路径失败,需按验收清单核对。 |
| 通知范围 | 建议提前通知:物业/客服、前台与访客登记、安保与梯控相关值班(按项目实际 roster 确定)。 |
---
## 4. 前置条件(升级前)
- [ ] 已与甲方确认 **周二 / 周三** 夜间窗口。
- [ ] 取得 **v2.0.7** 发布包(含 `jar``ddl/tenant_visitor_floor_policy.sql`、说明书)。
- [ ] 目标环境 **JDK 版本**符合实施方要求(与构建说明一致,一般为 JDK 8)。
- [ ] 数据库已做**备份**(全库或按运维规范),并可从发布包定位 DDL。
- [ ] 明确需启用「固定访客楼层」的租户列表及**允许区域**配置(若不启用,可跳过策略数据录入,行为与升级前一致)。
- [ ] 回滚包:保留**当前线上 JAR** 备份与回滚步骤(见下文)。
---
## 5. 实施步骤(建议顺序)
### 5.1 周二晚间(或首个窗口)
1. 备份数据库。
2. 执行 `tenant_visitor_floor_policy.sql``CREATE TABLE IF NOT EXISTS`,可重复执行需与 DBA 确认)。
3. (可选)在测试/预发环境先执行一遍并验证。
4. 记录执行人、时间与结果。
### 5.2 周三晚间(或第二个窗口 / 同晚续作)
1. 停止或滚动发布应用(按现网规范)。
2. 替换为 `cw-elevator-application-2.0.7.jar` 并启动。
3. 按业务需求对需启用的租户执行策略 **INSERT**`enabled=1``allow_zone_ids` 等为合法 JSON 等,字段级以技术说明书为准)。
4. 抽样验证:未传显式楼层时的访客派梯、租户策略开/关、与组织楼层无交集时的失败提示等。
5. 观察监控与日志,**值守**至约定结束时间。
*若合并为单次窗口:按「备份 → DDL → 部署 JAR → 策略数据 → 验收」顺序连续执行,并预留回滚决策时间。*
---
## 6. 验收要点(摘要)
- 未配置或未启用策略时:与升级前行为一致。
- 已启用策略且业务走「未显式指定楼层」路径:访客可去楼层为**组织允许**与**租户允许**的**交集**。
- 交集为空时:接口返回预期业务错误(技术码见实施方说明书)。
- 第三方已显式传入楼层的路径:不因本策略表改变原逻辑。
---
## 7. 回滚预案
| 场景 | 建议动作 |
|------|-----------|
| 应用异常 | 回退至上一版本 JAR;数据库新表若已存在且旧应用不读该表,通常可继续服务;与实施方确认。 |
| 策略配置错误 | 优先**停用或修正策略行**,避免大规模回滚应用。 |
| 必须撤表 | 仅在评估无依赖后由 DBA 执行删表;**高风险**,需书面确认。 |
---
## 8. 交付物核对
- [ ] `cw-elevator-application-2.0.7.jar`
- [ ] `ddl/tenant_visitor_floor_policy.sql`
- [ ] 《版本升级说明书》(实施/技术)
- [ ] 本《甲方版本升级说明》(如已作为对甲交付)
- [ ] 本《升级计划》(双方确认签字/邮件留档)
---
**文档状态**:草案;**时间点为暂定周二、周三晚间**,正式实施前请更新「待确认栏」并留存确认记录。
@@ -0,0 +1,32 @@
# cw-elevator-application v2.0.7 发布索引
本版本**功能升级说明**已单独成文,**仅覆盖「租户访客固定访问楼层」**及配套数据库 DDL,见:
**[cw-elevator-application-v2.0.7-版本升级说明书](./cw-elevator-application-v2.0.7-版本升级说明书.md)**
**对甲交付(业务表述与排期)**
- [甲方版本升级说明](./cw-elevator-application-v2.0.7-甲方版本升级说明.md)
- [升级计划(含夜间 · 周二/周三窗口)](./cw-elevator-application-v2.0.7-升级计划.md)
- [实施交付清单(实施方内部与对甲交付核对)](./cw-elevator-application-v2.0.7-实施交付清单.md)
- [实施验收记录模板(上线当晚记录)](./cw-elevator-application-v2.0.7-实施验收记录模板.md)
- [SQL与代码一致性审核记录(发布规范走查依据)](./cw-elevator-application-v2.0.7-SQL与代码一致性审核记录.md)
---
## 一键构建与发布目录
在仓库根目录、**JDK 8** 下执行:
```bash
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
./scripts/release-cw-elevator-application.sh 2.0.7
```
输出:**`maven-cw-elevator-application/releases/cw-elevator-application-V2.0.7.<YYYYMMDD>/`**(目录名含构建日期,与 `cw-elevator-application-V1.0.0.20211103` 命名风格一致;可用环境变量 **`RELEASE_DATE_LABEL`** 指定日期),含 `cw-elevator-application-2.0.7.jar``ddl/`、发布根目录下的 `bootstrap.properties` / `application*.properties`(与星中心/V1 同层摆放,**无额外 `config/` 子目录**)、`start.sh` / `stop.sh` / `cw-elevator-application.service`(路径占位符需现场替换)、`run.sh``common-java.sh`、**`collect_elevator_runtime_evidence.sh`**(根目录,现场只读证据采集)、`版本升级说明书.md`、甲方与实施类 Markdown、`BUILD_MANIFEST.txt`;默认另生成 **`releases/cw-elevator-application-V2.0.7.<YYYYMMDD>.zip`**(设 `RELEASE_MAKE_ZIP=0` 可跳过)。
---
## Git 与大文件
`maven-cw-elevator-application/.gitignore` 忽略 `**releases/**/*.jar**`;**DDL 与说明书**可提交;可执行 JAR 请通过制品库或制品服务器分发。
@@ -0,0 +1,60 @@
# cw-elevator-application v2.0.7 实施交付清单
**用途**:用于正式发布交付前后的材料核对,满足“发布包 + 数据库脚本 + 升级说明 + 实施验收记录”闭环。
---
## 1. 发布包文件清单
- [ ] `cw-elevator-application-2.0.7.jar`
- [ ] `ddl/tenant_visitor_floor_policy.sql`(建表脚本)
- [ ] `ddl/tenant_visitor_floor_policy_init_guangfa_fund.sql`(广发基金初始化示例/可直接执行)
- [ ] `版本升级说明书.md`(技术实施口径)
- [ ] `甲方版本升级说明.md`(业务口径)
- [ ] `升级计划.md`(实施窗口与回滚安排)
- [ ] `实施验收记录模板.md`(上线当晚记录)
- [ ] `BUILD_MANIFEST.txt`(构建时间、分支、提交号)
---
## 2. 数据库变更交付项
- [ ] DBA 已确认目标库与执行窗口
- [ ] 已备份目标库(全库/指定库按现场规范)
- [ ] 已执行 `tenant_visitor_floor_policy.sql`
- [ ] 已执行或评审 `tenant_visitor_floor_policy_init_guangfa_fund.sql`
- [ ] 已确认 `allow_zone_ids` 使用的是电梯库 `zone_id`(非其它系统 UUID
- [ ] 已留存 SQL 执行记录(执行人、时间、结果)
---
## 3. 应用部署交付项
- [ ] 上线前已保存旧版 JAR 回滚包
- [ ] 已按窗口替换为 `cw-elevator-application-2.0.7.jar`
- [ ] 应用启动日志无严重报错
- [ ] 关键接口健康检查通过(含 `add/visitor` 主链路)
- [ ] 监控观察窗口内无持续异常
---
## 4. 验收交付项
- [ ] UC-01:未传 `floorIds` 且策略启用时,楼层为 `floorList ∩ allow_zone_ids`
- [ ] UC-01:无交集时返回 `76260532`
- [ ] UC-02:显式传 `floorIds` 时不受策略表影响
- [ ] 未启用策略租户行为与升级前一致
- [ ] 已按《实施验收记录模板》完成签字/邮件留档
---
## 5. 交付确认信息
| 项目 | 内容 |
|------|------|
| 实施项目 | cw-elevator-application v2.0.7 |
| 实施日期 | `____年____月____日` |
| 甲方确认人 | `____________` |
| 乙方实施人 | `____________` |
| 文档留存路径 | `____________` |
@@ -0,0 +1,73 @@
# cw-elevator-application v2.0.7 实施验收记录模板
**用途**:实施当晚记录数据库执行、应用部署、业务验收和回滚判定,作为交付归档依据。
---
## 1. 基本信息
| 项目 | 内容 |
|------|------|
| 项目名称 | 智慧电梯 / 访客派梯系统 |
| 发布版本 | v2.0.7 |
| 实施日期 | `____年____月____日` |
| 实施时段 | `____:____` - `____:____` |
| 环境 | 生产 / 预生产(圈选) |
| 实施负责人 | `____________` |
| 甲方联系人 | `____________` |
---
## 2. 数据库执行记录
| 序号 | 脚本 | 执行时间 | 执行人 | 结果 | 备注 |
|------|------|----------|--------|------|------|
| 1 | tenant_visitor_floor_policy.sql | `____` | `____` | 成功/失败 | `____` |
| 2 | tenant_visitor_floor_policy_init_guangfa_fund.sql | `____` | `____` | 成功/失败 | `____` |
**异常记录**`______________________________________________`
---
## 3. 应用发布记录
| 项目 | 记录 |
|------|------|
| 上线前版本 | `____________` |
| 上线后版本 | `cw-elevator-application-2.0.7.jar` |
| 启停方式 | `____________` |
| 服务恢复时间 | `____________` |
| 日志健康检查 | 通过 / 不通过 |
| 监控观察结论 | 正常 / 异常(说明) |
---
## 4. 验收结果记录
| 用例 | 期望 | 实际 | 结论 |
|------|------|------|------|
| UC-01(未传 floorIds,策略启用) | floorList 与 allow_zone_ids 求交 | `____` | 通过/不通过 |
| UC-01(交集为空) | 返回 `76260532` | `____` | 通过/不通过 |
| UC-02(显式传 floorIds | 不受策略表影响 | `____` | 通过/不通过 |
| 无策略租户回归 | 行为与升级前一致 | `____` | 通过/不通过 |
---
## 5. 回滚判定
- [ ] 无需回滚,发布成功
- [ ] 需要回滚应用(原因:`________________`
- [ ] 需要回滚数据/策略(原因:`________________`
回滚执行记录(如发生):`______________________________________________`
---
## 6. 签字确认
| 角色 | 姓名 | 日期 | 备注 |
|------|------|------|------|
| 甲方确认 | `____________` | `____` | `____` |
| 乙方实施 | `____________` | `____` | `____` |
| 乙方复核 | `____________` | `____` | `____` |
@@ -0,0 +1,112 @@
# cw-elevator-application v2.0.7 版本升级说明书
**适用范围**:本说明**仅**描述 **v2.0.7** 中与 **租户访客固定访问楼层**(租户级允许区域与组织 `floorList` 求交)相关的升级内容,不含其它性能优化或通用发布项。
**应用制品**`cw-elevator-application-2.0.7.jar`Spring Boot 可执行 fat JAR)。
---
## 1. 功能概述
**访客派梯** 接口 **`add/visitor`**(实现类 `PersonRuleServiceImpl#addVisitor`)中,当调用方 **未传入非空 `floorIds`**(业务流程 **UC-01**:按被访人组织侧楼层推导)时:
1. 服务仍先通过 **`person/detail`** 取得被访人 **`floorList`**(与升级前一致)。
2. **新增**:若数据库中存在**启用**的租户策略行,且 **`allow_zone_ids`** 解析为非空 JSON 数组,则最终生效楼层为
**`effectiveFloors = floorList ∩ allow_zone_ids`**(顺序保持 **`floorList`** 原有顺序)。
3. 若交集 **为空**,接口返回失败码 **`76260532`**(不允许静默放宽到其它楼层)。
4. 若无策略表、无启用行、`allow_zone_ids` 为空或 JSON 无效:行为与升级前一致,使用 **`floorList` 全集**。
当调用方 **已传入非空 `floorIds`**(**UC-02**,第三方显式指定楼层)时:**不读取**策略表,**不对入参求交**,与升级前一致。
> **产品表述**:「固定访问楼层」在本阶段由租户管理员通过 **`allow_zone_ids`** 声明**允许开放给访客派梯的区域(zoneId)集合**;在 UC-01 路径下与组织返回的 **`floorList`** 取交集,从而将访客权限**收敛**到既有「被访人可去楼层」与「租户允许楼层」的双重约束内。
---
## 2. 涉及的数据库变更
### 2.1 变更类型
| 类型 | 对象 |
|------|------|
| **新增表** | `tenant_visitor_floor_policy` |
**执行库**:与电梯应用 **同一数据源**MySQL/InnoDB,与现有派梯业务库一致)。
### 2.2 表用途(摘要)
| 字段 | 含义 |
|------|------|
| `business_id` | 租户/机构 ID |
| `policy_type` | 本阶段固定 **`INTERSECT_ALLOWLIST`** |
| `allow_zone_ids` | **TEXT**,存 **JSON 数组**字符串,元素为允许访客派梯的 **zoneId** |
| `building_id` | 租户级默认策略填 **NULL**(预留楼栋维) |
| `enabled` | **1** 启用 / **0** 停用 |
| `policy_version` | 配置版本号(审计) |
唯一约束 **`uk_biz_building (business_id, building_id)`**:同一租户、租户级策略(`building_id` 为空)**建议仅维护一行**,避免多行时查询仅命中「最新一条」与运维预期不符。
### 2.3 DDL 脚本位置
| 用途 | 仓库内路径 |
|------|------------|
| **权威 DDL** | `docs/sql/tenant_visitor_floor_policy.sql` |
**发布包内副本**:随 v2.0.7 发布目录一并下发,路径为 **`ddl/tenant_visitor_floor_policy.sql`**(与根目录 JAR 同级下的 `ddl` 子目录)。
脚本内容为 **`CREATE TABLE IF NOT EXISTS`**,在未建表环境可重复执行;**不含**业务数据 `INSERT`,上线需按租户配置自行 **`INSERT`** 策略行。
### 2.4 上线执行顺序(建议)
1. **备份**当前电梯应用库(至少包含待变更库的全库或相关表备份策略)。
2. 在目标库执行 **`ddl/tenant_visitor_floor_policy.sql`**(或直接使用仓库 `docs/sql` 下同源文件)。
3. 对需启用策略的租户 **`INSERT`** 一行(示例字段:`business_id``policy_type='INTERSECT_ALLOWLIST'``allow_zone_ids` 为合法 JSON 数组、`enabled=1``building_id`**NULL**)。
4. 部署 **`cw-elevator-application-2.0.7.jar`** 并滚动重启应用。
5. 按 §4 做 **UC-01 / UC-02** 验收。
### 2.5 回滚说明
- **仅回滚应用**:还原旧版本 JAR 后,若库中**已存在**策略行且仍为 **enabled=1**,旧版本应用**通常不读取**该表,行为与历史一致;表结构可保留。
- **回滚数据库**:若需删除表(谨慎),在确认无其它依赖后执行 **`DROP TABLE tenant_visitor_floor_policy`**;请在变更窗口与 DBA 确认。
---
## 3. 行为与错误码(验收)
| 场景 | `floorIds` | 策略库 | 期望 |
|------|------------|--------|------|
| UC-01 基线 | 空/未传 | 无启用行或 allow 空/无效 | 使用组织 **`floorList` 全集**(与升级前一致) |
| UC-01 + 固定楼层 | 空/未传 | 有启用行且 allow 非空 | **`floorList ∩ allow`**(保序) |
| 无交集 | 空/未传 | allow 与 `floorList` 无交集 | **`76260532`** |
| 被访人无楼层 | 空/未传 | 任意 | **`76260531`** |
| UC-02 | **非空** | 任意 | **不读策略表**,按请求楼层处理 |
---
## 4. 发布包目录结构(v2.0.7
执行仓库根目录 **`./scripts/release-cw-elevator-application.sh 2.0.7`** 后,输出目录为(名称含构建日期 `<YYYYMMDD>`,与历史运行包 **`cw-elevator-application-V1.0.0.20211103`** 同构;可用环境变量 **`RELEASE_DATE_LABEL`** 固定日期):
**`maven-cw-elevator-application/releases/cw-elevator-application-V2.0.7.<YYYYMMDD>/`**
| 文件/目录 | 说明 |
|-----------|------|
| `cw-elevator-application-2.0.7.jar` | 可执行应用 |
| `bootstrap.properties``application*.properties` | 与 JAR 同层(**不**再使用 `config/` 子目录重复存放) |
| `ddl/tenant_visitor_floor_policy.sql` | 与本功能相关的 **唯一 DDL**(与 `docs/sql` 同源) |
| `版本升级说明书.md` | 本文件副本(便于随包交付) |
| `BUILD_MANIFEST.txt` | 构建时间、JDK、`git` 修订号 |
---
## 5. 参考文档(仓库内)
| 文档 | 路径 |
|------|------|
| 数据库阶段变更记录 | `docs/business/租户访客默认楼层-数据库阶段变更记录.md` |
| 数据库配置阶段技术设计 | `docs/business/租户访客默认楼层-数据库配置阶段技术设计.md` |
| 技术产品方案 | `docs/business/租户访客默认楼层技术产品方案.md` |
| 访客注册与派梯楼层走查 | `docs/business/访客注册与派梯楼层业务流程走查.md` |
---
**文档版本**:与制品 **`cw-elevator-application-2.0.7`** 对齐;若仅升级文档而不改代码,请以 **`BUILD_MANIFEST.txt`** 中构建时间为准。
@@ -0,0 +1,34 @@
# 电梯派梯应用 v2.0.7 — 版本升级说明(广发基金)
**制品**`cw-elevator-application-2.0.7.jar`。技术细节、验收码与脚本位置见同目录《版本升级说明书》。
---
## 本次升级做什么
针对**广发基金**租户:访客走常见派梯路径(接口**未单独传楼层**)时,系统在「被访人所在单位给的可去楼层」基础上,再按**广发基金侧配置的允许区域**做一次收紧,两边**都满足**的楼层才能派梯。这样可以把访客权限收在比如固定接待层,而员工本人仍可按组织权限去多层办公。
广发基金若**未配置或未启用**该策略,行为与现在一致。
---
## 上线要动什么
- 换新版应用包。
- 库里**多一张策略表**(脚本在发布包 `ddl/` 下);表里为广发基金写入**一行**启用策略即可,允许区域(如接待层对应的 zone)由业务与实施定稿。
其它租户不配策略则**不受影响**。
---
## 对您这边的影响
- **时间**:安排在**夜间**,具体周二/周三窗口见《升级计划》。
- **中断**:重启应用时派梯接口可能**短暂**不可用,一般会控制在很短时间。
- **配合**:指定一个对接人;确认广发基金侧要开放的**访客可达区域/楼层**(与前台、接待流程对齐);上线后若有异常派梯请及时反馈。
---
## 出问题怎么办
应用可先退回上一版包;策略数据可单独改/停,不一定整库回滚。细则见《升级计划》。
@@ -9,6 +9,7 @@
| 版本 | v0.1 草案(数据库阶段) |
| 适用工程 | `maven-cw-elevator-application`(电梯应用库;落库表位于**电梯库**或与电梯同数据源的业务库,以现网数据源划分为准) |
| 读者 | 后端开发、DBA、集成测试、运维 |
| **模型索引** | [租户组织人员访客-数据模型与用例](../architecture/租户组织人员访客-数据模型与用例.md)(仓库级 ER、`business_id` 与组织主键辨析) |
---
@@ -0,0 +1,47 @@
-- 广发基金租户:访客默认楼层策略初始化(电梯库 cw-elevator-application
--
-- 请先执行同目录 tenant_visitor_floor_policy.sql 建表(或 releases/v2.0.0/ddl 同源 DDL)。
--
-- 字段说明:allow_zone_ids 为 JSON 数组字符串,元素须与组织/派梯侧 floorList、image_rule_ref 使用的
-- zone_id(电梯库 snowflake 形态)一致,勿使用 cw_is_area 的 UUID。
--
-- 数据来源(现场查询 192.168.3.12:3307,截至脚本编写日):
-- business_idcomponent-organization.cw_is_organization
-- NAME='[28-38F]广发基金管理有限公司' -> BUSINESS_ID = 2524639890ba4f2cba9ba1a4eeaa4015
-- 28F zone_idcw-elevator-application.code_elevator_area / image_rule_ref
-- zone_id = 605560545117995008zone_name=28Fcode=0x1C
--
-- 重复执行:依赖主键 id 固定,使用 ON DUPLICATE KEY UPDATE 刷新策略字段。
SET NAMES utf8mb4;
INSERT INTO tenant_visitor_floor_policy (
id,
business_id,
policy_type,
allow_zone_ids,
building_id,
enabled,
policy_version,
remark,
created_at,
updated_at
) VALUES (
'gf_vstr_policy_guangfa_fund_001x',
'2524639890ba4f2cba9ba1a4eeaa4015',
'INTERSECT_ALLOWLIST',
'["605560545117995008"]',
NULL,
1,
1,
'广发基金:访客与 floorList 求交后仅保留 allowlist(默认仅 28F zone)。业务配置见产品方案。',
UNIX_TIMESTAMP(NOW()) * 1000,
UNIX_TIMESTAMP(NOW()) * 1000
)
ON DUPLICATE KEY UPDATE
policy_type = VALUES(policy_type),
allow_zone_ids = VALUES(allow_zone_ids),
enabled = VALUES(enabled),
policy_version = policy_version + 1,
remark = VALUES(remark),
updated_at = VALUES(updated_at);
@@ -0,0 +1,31 @@
-- 租户访客楼层策略:business_id → org_id 数据迁移
-- 前提:DDLtenant_visitor_floor_policy_v2.sql)已执行
-- 执行方式:人工确认 org_id 对应关系后逐行执行
-- 1. 列出所有公司级组织节点(在 component-organization 库执行,供确认)
-- SELECT o.ID, o.NAME, o.PARENT_ID
-- FROM `component-organization`.cw_is_organization o
-- WHERE o.BUSINESS_ID = '2524639890ba4f2cba9ba1a4eeaa4015'
-- AND o.IS_DEL = 0
-- ORDER BY o.NAME;
USE cw-elevator-application;
-- 2. 为现有策略行填入 org_id(示例:广发基金)
-- 请先确认 NAME 匹配正确,再执行
-- UPDATE tenant_visitor_floor_policy
-- SET org_id = '<广发基金的 org_id>',
-- business_id = NULL
-- WHERE id = 'gf_vstr_policy_guangfa_fund_001x';
-- 3. 为其他公司新增策略行(模板)
-- INSERT INTO tenant_visitor_floor_policy
-- (id, org_id, policy_type, allow_zone_ids, building_id, enabled, policy_version, remark, created_at, updated_at)
-- VALUES
-- (REPLACE(UUID(),'-',''), '<公司 org_id>', 'INTERSECT_ALLOWLIST',
-- '["<zone_id>"]', NULL, 1, 1, '', UNIX_TIMESTAMP(NOW())*1000, UNIX_TIMESTAMP(NOW())*1000);
-- 4. 验证迁移结果
SELECT id, org_id, business_id, policy_type, allow_zone_ids, enabled
FROM tenant_visitor_floor_policy
ORDER BY org_id;
@@ -0,0 +1,26 @@
-- 租户访客楼层策略:org_id 粒度修复
-- 执行顺序:先 DDL → 数据迁移 → 发应用包
-- 回滚:DROP INDEX uk_org_building, DROP COLUMN org_id, ADD UNIQUE KEY uk_biz_building (business_id, building_id)
USE `cw-elevator-application`;
-- 1. 新增 org_id 列
ALTER TABLE tenant_visitor_floor_policy
ADD COLUMN org_id VARCHAR(32) NULL COMMENT '组织节点ID(cw_is_organization.ID)'
AFTER business_id;
-- 2. 替换唯一约束(business_id → org_id
ALTER TABLE tenant_visitor_floor_policy
DROP INDEX uk_biz_building,
ADD UNIQUE KEY uk_org_building (org_id, building_id);
-- 3. 标记 business_id 为废弃
ALTER TABLE tenant_visitor_floor_policy
MODIFY COLUMN business_id VARCHAR(64) NULL COMMENT 'DEPRECATED: 已废弃,以 org_id 为准';
-- 验证
SELECT COLUMN_NAME, COLUMN_KEY, COLUMN_COMMENT
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'cw-elevator-application'
AND TABLE_NAME = 'tenant_visitor_floor_policy'
ORDER BY ORDINAL_POSITION;
@@ -0,0 +1,428 @@
mysql: [Warning] Using a password on the command line interface can be insecure.
cw_is_device_image_store ID varchar NO PRI 主键
cw_is_device_image_store DEVICE_ID varchar NO NULL MUL 设备Id
cw_is_device_image_store IMAGE_STORE_ID varchar NO NULL 图库Id
cw_is_device_image_store TYPE smallint NO NULL 设备图库变更类型(1:新增,2:删除)
cw_is_device_image_store CREATE_TIME bigint YES NULL 创建时间 时间戳
cw_is_device_image_store LAST_UPDATE_TIME bigint YES NULL 修改日期 时间戳
cw_is_device_image_store FINISH_PULL_TIME bigint YES NULL 结束拉取时间 时间戳
cw_is_device_image_store STATUS smallint NO 0 状态(0:未通知,1:已通知)
cw_is_device_person ID varchar NO NULL PRI 主键
cw_is_device_person DEVICE_ID varchar NO NULL MUL 设备ID
cw_is_device_person PERSON_ID varchar NO NULL 人员ID
cw_is_device_person TYPE smallint YES NULL 类型(0:正常,1:删除)
cw_is_device_person CREATE_TIME bigint YES NULL 创建时间 时间戳
cw_is_device_person LAST_UPDATE_TIME bigint YES NULL 修改日期 时间戳
cw_is_device_person_sync_log ID varchar NO PRI
cw_is_device_person_sync_log DEVICE_ID varchar NO NULL MUL 设备ID
cw_is_device_person_sync_log IMAGE_STORE_ID varchar NO NULL MUL 图库ID
cw_is_device_person_sync_log PERSON_ID varchar NO NULL 人员ID
cw_is_device_person_sync_log GROUP_PERSON_REF_ID varchar NO NULL MUL 图库人员关联ID
cw_is_device_person_sync_log IMAGE_ID varchar YES NULL 人脸ID
cw_is_device_person_sync_log STATUS smallint YES 0 同步状态(0:设备未拉取,1:设备已拉取,2:设备上报成功,3:设备上报失败)
cw_is_device_person_sync_log CODE varchar YES NULL 错误编码
cw_is_device_person_sync_log ERROR_MESSAGE varchar YES NULL 失败原因
cw_is_device_person_sync_log CREATE_TIME bigint YES NULL 创建时间 时间戳
cw_is_device_person_sync_log LAST_UPDATE_TIME bigint YES NULL 修改日期 时间戳(新增/修改人员信息时更新)
cw_is_device_person_sync_log COUNT smallint YES 0 计数器
cw_is_device_person_sync_log LAST_PULL_TIME bigint YES NULL 最近拉取时间 时间戳
cw_is_device_person_sync_log LAST_REPORT_TIME bigint YES NULL 最近上报时间 时间戳
cw_is_device_person_sync_log UPDATE_INFO varchar YES NULL 处理信息
cw_is_device_person_sync_log EXPIRY_BEGIN_DATE bigint YES NULL 人员有效期开始时间 时间戳
cw_is_device_person_sync_log EXPIRY_END_DATE bigint YES NULL 人员有效期结束时间 时间戳
cw_is_device_person_sync_log DEVICE_PERSON_REF_ID varchar NO NULL 设备-人员表主键
cw_is_device_person_sync_log IS_DEL smallint YES 0 逻辑删除字段 0未删除 1删除
cw_is_group_person_ref ID varchar NO NULL PRI
cw_is_group_person_ref IMAGE_STORE_ID varchar YES NULL MUL 图库id
cw_is_group_person_ref PERSON_ID varchar YES NULL MUL 人员id
cw_is_group_person_ref EXPIRY_BEGIN_DATE decimal YES NULL 人员有效期开始时间 时间戳
cw_is_group_person_ref EXPIRY_END_DATE decimal YES NULL 人员有效期结束时间 时间戳
cw_is_group_person_ref STATUS smallint YES 0 MUL 人员有效状态 -1删除、0正常、1失效
cw_is_group_person_ref CREATE_USER_ID varchar YES NULL
cw_is_group_person_ref CREATE_TIME decimal YES NULL
cw_is_group_person_ref LAST_UPDATE_USER_ID varchar YES NULL
cw_is_group_person_ref LAST_UPDATE_TIME decimal YES NULL
cw_is_group_person_ref IS_DEL smallint NO 0 MUL 逻辑删除字段 0未删除 1删除
cw_is_group_person_ref GENDER smallint YES NULL 性别
cw_is_group_person_ref AGE int YES NULL 年龄
cw_is_group_person_ref GROUP_TIME bigint YES NULL 入库时间
cw_is_group_person_ref GROUP_STATUS smallint YES NULL 0:未建模 1:建模中 2:建模完成 3:建模失败
cw_is_group_person_ref ERROR_MESSAGE varchar YES NULL 建模失败时的失败原因
cw_is_group_person_ref EXPIRY_BEGIN_DATE_STATUS smallint YES 0 人员有效开始时间状态(0:未处理 1:已处理)
cw_is_group_person_ref EXPIRY_END_DATE_STATUS smallint YES 0 人员有效期结束时间状态(0:未处理 1:已处理)
cw_is_group_person_ref VALID_DATE_CRON varchar YES NULL 多时间段cron表达式
cw_is_image_store_associated_ref ID varchar NO NULL PRI 唯一标识
cw_is_image_store_associated_ref IMAGE_STORE_ID varchar NO NULL MUL 图库id
cw_is_image_store_associated_ref ASSOCIATED_OBJECT_ID varchar NO NULL 关联对象id
cw_is_image_store_associated_ref ASSOCIATED_OBJECT_ID_TYPE int NO NULL 关联对象的类型,1:机构,2:标签,3:个人
cw_is_image_store_associated_ref ASSOCIATED_ACTION int YES NULL 0:包含,1:排除
cw_is_image_store_associated_ref EXPIRY_BEGIN_DATE decimal YES NULL 人员有效期开始时间 时间戳
cw_is_image_store_associated_ref EXPIRY_END_DATE decimal YES NULL 人员有效期结束时间 时间戳
cw_is_image_store_associated_ref CREATE_TIME decimal YES NULL
cw_is_image_store_associated_ref CREATE_USER_ID varchar YES NULL
cw_is_image_store_associated_ref LAST_UPDATE_TIME decimal YES NULL
cw_is_image_store_associated_ref LAST_UPDATE_USER_ID varchar YES NULL
cw_is_image_store_associated_ref VALID_DATE_CRON varchar YES NULL 多时间段cron表达式
cw_is_label ID varchar NO NULL PRI 唯一标识
cw_is_label NAME varchar YES NULL
cw_is_label CODE varchar NO NULL 编码
cw_is_label BUSINESS_ID varchar YES NULL business id
cw_is_label IS_DEL smallint YES NULL 0未删,1已删
cw_is_label ADD_TYPE smallint YES NULL 添加类型,0手动创建,1应用初始,2应用创建
cw_is_label CREATE_USER_ID varchar YES NULL 创建者
cw_is_label CREATE_TIME decimal YES NULL 创建时间
cw_is_label LAST_UPDATE_USER_ID varchar YES NULL 最后更新者
cw_is_label LAST_UPDATE_TIME decimal YES NULL 最后更新时间
cw_is_organization ID varchar NO NULL PRI 唯一标识
cw_is_organization NAME varchar YES NULL 机构名称
cw_is_organization ORDER_BY int YES NULL 同级排序字段
cw_is_organization PARENT_ID varchar YES NULL 上级机构id
cw_is_organization BUSINESS_ID varchar YES NULL
cw_is_organization TYPE_ID varchar YES NULL 机构类型ID
cw_is_organization IS_DEL smallint YES NULL 是否删除,0没有删除,1被删除
cw_is_organization CREATE_USER_ID varchar YES NULL 创建者
cw_is_organization CREATE_TIME decimal YES NULL 创建时间
cw_is_organization LAST_UPDATE_USER_ID varchar YES NULL 最后更新者
cw_is_organization LAST_UPDATE_TIME decimal YES NULL 最后更新时间
cw_is_organization EXT1 varchar YES NULL 扩展字段1
cw_is_organization EXT2 varchar YES NULL 扩展字段2
cw_is_organization EXT3 varchar YES NULL 扩展字段3
cw_is_organization EXT4 varchar YES NULL 扩展字段4
cw_is_organization EXT5 varchar YES NULL 扩展字段5
cw_is_organization EXT6 varchar YES NULL 扩展字段6
cw_is_organization EXT7 varchar YES NULL 扩展字段7
cw_is_organization EXT8 varchar YES NULL 扩展字段8
cw_is_organization EXT9 varchar YES NULL 扩展字段9
cw_is_organization EXT10 varchar YES NULL 扩展字段10
cw_is_organization EXT11 varchar YES NULL 扩展字段11
cw_is_organization EXT12 varchar YES NULL 扩展字段12
cw_is_organization EXT13 varchar YES NULL 扩展字段13
cw_is_organization EXT14 varchar YES NULL 扩展字段14
cw_is_organization EXT15 varchar YES NULL 扩展字段15
cw_is_organization EXT16 varchar YES NULL 扩展字段16
cw_is_organization EXT17 varchar YES NULL 扩展字段17
cw_is_organization EXT18 varchar YES NULL 扩展字段18
cw_is_organization EXT19 varchar YES NULL 扩展字段19
cw_is_organization EXT20 varchar YES NULL 扩展字段20
cw_is_organization EXT21 varchar YES NULL 扩展字段21
cw_is_organization EXT22 varchar YES NULL 扩展字段22
cw_is_organization EXT23 varchar YES NULL 扩展字段23
cw_is_organization EXT24 varchar YES NULL 扩展字段24
cw_is_organization EXT25 varchar YES NULL 扩展字段25
cw_is_organization EXT26 varchar YES NULL 扩展字段26
cw_is_organization EXT27 varchar YES NULL 扩展字段27
cw_is_organization EXT28 varchar YES NULL 扩展字段28
cw_is_organization EXT29 varchar YES NULL 扩展字段29
cw_is_organization EXT30 varchar YES NULL 扩展字段30
cw_is_organization IS_VALID int YES NULL 禁用启用,0=禁用,1=启用
cw_is_organization_area_ref ID varchar NO NULL 主键ID
cw_is_organization_area_ref ORG_ID varchar NO 机构ID
cw_is_organization_area_ref AREA_ID varchar NO 区域ID
cw_is_organization_area_ref REF_TYPE tinyint NO NULL 0所在区域 1派梯区域
cw_is_organization_area_ref BUSINESS_ID varchar NO 企业ID
cw_is_organization_area_ref CREATE_TIME bigint YES NULL 创建日期 时间戳
cw_is_organization_area_ref CREATE_USER_ID varchar YES NULL 创建人ID
cw_is_organization_area_ref LAST_UPDATE_TIME bigint YES NULL 修改日期 时间戳
cw_is_organization_area_ref LAST_UPDATE_USER_ID varchar YES NULL 修改人员ID
cw_is_organization_extend ID varchar NO
cw_is_organization_extend ORGANIZATION_ID varchar NO
cw_is_organization_extend BUSINESS_ID varchar NO NULL
cw_is_organization_extend EMPLOYEE_NUMBER smallint NO 0
cw_is_organization_extend ORG_CAR_NUMBER smallint NO 0
cw_is_organization_extend EMPLOYEE_CAR_NUMBER smallint NO 0
cw_is_organization_extend LEASEHOLD_BEGIN bigint YES NULL 起租日期
cw_is_organization_extend LEASEHOLD_END bigint YES NULL 到租日期
cw_is_organization_extend PAYMENT_STATE tinyint YES NULL
cw_is_organization_extend CARPORT_NUM smallint NO 0 车位数量
cw_is_organization_extend CREATE_USER_ID varchar YES
cw_is_organization_extend CREATE_TIME bigint YES NULL
cw_is_organization_extend LAST_UPDATE_USER_ID varchar YES
cw_is_organization_extend LAST_UPDATE_TIME bigint YES NULL
cw_is_organization_extend REMARK varchar YES
cw_is_organization_extend_detail ID varchar NO
cw_is_organization_extend_detail ORGANIZATION_ID varchar NO
cw_is_organization_extend_detail BUSINESS_ID varchar NO NULL
cw_is_organization_extend_detail UNIT_RENT decimal NO NULL
cw_is_organization_extend_detail WATER_AMOUNT decimal NO NULL
cw_is_organization_extend_detail ELECTRICITY_AMOUNT decimal NO NULL
cw_is_organization_extend_detail PROPERTY_AMOUNT decimal NO NULL
cw_is_organization_extend_detail BELONG_DATE bigint NO NULL
cw_is_organization_extend_detail PAY_TIME bigint NO NULL
cw_is_organization_extend_detail CREATE_USER_ID varchar NO
cw_is_organization_extend_detail CREATE_TIME bigint NO NULL
cw_is_organization_extend_detail LAST_UPDATE_USER_ID varchar NO
cw_is_organization_extend_detail LAST_UPDATE_TIME bigint NO NULL
cw_is_organization_extend_detail REMARK varchar NO
cw_is_organization_image_store APPLICATION_ID varchar NO NULL PRI 设备主键
cw_is_organization_image_store ORG_ID varchar NO NULL PRI 设备主键
cw_is_organization_image_store IMAGE_STORE_ID varchar NO NULL PRI 图库主键
cw_is_organization_type ID varchar NO NULL PRI 主键
cw_is_organization_type BUSINESS_ID varchar YES NULL 企业ID
cw_is_organization_type CODE varchar YES NULL 编号
cw_is_organization_type NAME varchar YES NULL 名称
cw_is_organization_type HAS_LOWER_LEVEL tinyint YES 0 是否可以有下级机构 0 不可以 1 可以
cw_is_organization_type HAS_DEFAULT tinyint YES 0 是否是默认的 0 不是 1 是
cw_is_organization_type STATUS tinyint YES 0 状态(0 有效 1 无效)默认为0
cw_is_organization_type CREATE_USER_ID varchar YES NULL 创建人
cw_is_organization_type CREATE_TIME decimal YES NULL 创建时间
cw_is_organization_type LAST_UPDATE_USER_ID varchar YES NULL 更新人
cw_is_organization_type LAST_UPDATE_TIME decimal YES NULL 更新时间
cw_is_organization_type_properties ID varchar NO NULL PRI 主键
cw_is_organization_type_properties BUSINESS_ID varchar YES NULL 企业ID
cw_is_organization_type_properties ORGANIZATION_TYPE_ID varchar YES NULL 机构ID
cw_is_organization_type_properties CODE varchar YES NULL 编号
cw_is_organization_type_properties NAME varchar YES NULL 名称
cw_is_organization_type_properties STATUS tinyint YES 0 (0 有效 1 无效)默认为0
cw_is_organization_type_properties HAS_REQUIRED tinyint YES 0 是否必填 0 非必填 1 必填
cw_is_organization_type_properties ORDER_NUM int YES NULL 序号
cw_is_organization_type_properties CREATE_USER_ID varchar YES NULL 创建人
cw_is_organization_type_properties CREATE_TIME decimal YES NULL 创建时间
cw_is_organization_type_properties LAST_UPDATE_USER_ID varchar YES NULL 更新人
cw_is_organization_type_properties LAST_UPDATE_TIME decimal YES NULL 更新时间
cw_is_person ID varchar NO NULL PRI 主键ID
cw_is_person BUSINESS_ID varchar NO NULL MUL 企业ID
cw_is_person PERSON_CODE varchar YES NULL 人员CODE
cw_is_person NAME varchar YES NULL MUL 姓名
cw_is_person USER_NAME varchar YES NULL 用户名
cw_is_person PHONE varchar YES NULL 联系电话
cw_is_person STATUS smallint YES NULL 人员状态(0 有效 1 无效)默认为0
cw_is_person EXPIRY_BEGIN_DATE decimal YES NULL 人员有效期开始时间 时间戳
cw_is_person EXPIRY_END_DATE decimal YES NULL 人员有效期结束时间 时间戳
cw_is_person SHOW_PICTURE varchar YES NULL 人员展示照
cw_is_person COMPARE_PICTURE text YES NULL 人员比对照
cw_is_person IS_DEL smallint YES NULL MUL 逻辑删除字段 0:未删除 1:已删除
cw_is_person CREATE_TIME decimal YES NULL 创建日期 时间戳
cw_is_person CREATE_USER_ID varchar YES NULL 创建人ID
cw_is_person LAST_UPDATE_TIME decimal YES NULL 修改日期 时间戳
cw_is_person LAST_UPDATE_USER_ID varchar YES NULL 修改人员ID
cw_is_person EMAIL varchar YES NULL 邮箱
cw_is_person IMAGE_ID varchar YES NULL MUL 识别照
cw_is_person EXT1 varchar YES NULL 扩展字段1
cw_is_person EXT2 varchar YES NULL 扩展字段2
cw_is_person EXT3 varchar YES NULL 扩展字段3
cw_is_person EXT4 varchar YES NULL 扩展字段4
cw_is_person EXT5 varchar YES NULL 扩展字段5
cw_is_person EXT6 varchar YES NULL 扩展字段6
cw_is_person EXT7 varchar YES NULL 扩展字段7
cw_is_person EXT8 varchar YES NULL 扩展字段8
cw_is_person EXT9 varchar YES NULL 扩展字段9
cw_is_person EXT10 varchar YES NULL 扩展字段10
cw_is_person EXT11 varchar YES NULL 扩展字段11
cw_is_person EXT12 varchar YES NULL 扩展字段12
cw_is_person EXT13 varchar YES NULL 扩展字段13
cw_is_person EXT14 varchar YES NULL 扩展字段14
cw_is_person EXT15 varchar YES NULL 扩展字段15
cw_is_person EXT16 varchar YES NULL 扩展字段16
cw_is_person EXT17 varchar YES NULL 扩展字段17
cw_is_person EXT18 varchar YES NULL 扩展字段18
cw_is_person EXT19 varchar YES NULL 扩展字段19
cw_is_person EXT20 varchar YES NULL 扩展字段20
cw_is_person EXT21 varchar YES NULL 扩展字段21
cw_is_person EXT22 varchar YES NULL 扩展字段22
cw_is_person EXT23 varchar YES NULL 扩展字段23
cw_is_person EXT24 varchar YES NULL 扩展字段24
cw_is_person EXT25 varchar YES NULL 扩展字段25
cw_is_person EXT26 varchar YES NULL 扩展字段26
cw_is_person EXT27 varchar YES NULL 扩展字段27
cw_is_person EXT28 varchar YES NULL 扩展字段28
cw_is_person EXT29 varchar YES NULL 扩展字段29
cw_is_person EXT30 varchar YES NULL 扩展字段30
cw_is_person EXT31 varchar YES NULL 扩展字段31
cw_is_person EXT32 varchar YES NULL 扩展字段32
cw_is_person EXT33 varchar YES NULL 扩展字段33
cw_is_person EXT34 varchar YES NULL 扩展字段34
cw_is_person EXT35 varchar YES NULL 扩展字段35
cw_is_person EXT36 varchar YES NULL 扩展字段36
cw_is_person EXT37 varchar YES NULL 扩展字段37
cw_is_person EXT38 varchar YES NULL 扩展字段38
cw_is_person EXT39 varchar YES NULL 扩展字段39
cw_is_person EXT40 varchar YES NULL 扩展字段40
cw_is_person CREATE_SYS_ACCOUNT smallint NO 0 是否同步账号,1同步,0不同步
cw_is_person SYS_ACCOUNT_ID varchar YES NULL 系统账号ID
cw_is_person SOURCE smallint NO 1 人员来源 1页面管理 2抓拍
cw_is_person RESERVE_INFO varchar YES NULL 保留信息
cw_is_person WELCOME varchar YES NULL 欢迎语
cw_is_person IC_CARD_NO varchar YES NULL IC卡号
cw_is_person IC_CARD_TYPE varchar YES NULL IC卡类型
cw_is_person DEFAULT_FLOOR varchar YES NULL 默认楼层id
cw_is_person CHOOSE_FLOOR text YES NULL 选中的楼层
cw_is_person_audit ID varchar NO NULL PRI 主键ID
cw_is_person_audit BUSINESS_ID varchar NO NULL 企业ID
cw_is_person_audit NAME varchar NO NULL 姓名
cw_is_person_audit USER_NAME varchar YES NULL 用户名
cw_is_person_audit PERSON_CODE varchar YES NULL 人员CODE
cw_is_person_audit PHONE varchar YES NULL 联系电话
cw_is_person_audit EMAIL varchar YES NULL 邮箱
cw_is_person_audit IMAGE_ID varchar YES NULL 识别照
cw_is_person_audit COMPARE_PICTURE varchar YES NULL 人员比对照
cw_is_person_audit SHOW_PICTURE varchar YES NULL 人员展示照
cw_is_person_audit ORGANIZATIONIDS text YES NULL 所属机构
cw_is_person_audit ORGANIZATIONNAMES text YES NULL 所属机构名称
cw_is_person_audit LABELIDS text YES NULL 所属标签
cw_is_person_audit LABELNAMES text YES NULL 所属标签名称
cw_is_person_audit CREATE_SYS_ACCOUNT tinyint YES 0 是否同步创建账号,0 不创建 1 创建
cw_is_person_audit SYS_ACCOUNT_ID varchar YES NULL 系统账号ID
cw_is_person_audit IC_CARD_NO varchar YES NULL IC卡号
cw_is_person_audit IC_CARD_TYPE varchar YES NULL IC卡类型
cw_is_person_audit SOURCE tinyint NO NULL 来源(1:页面;2:抓拍;3:设备;4:扫码)
cw_is_person_audit DEVICE_CODE varchar YES NULL 注册设备编号
cw_is_person_audit DEVICE_NAME varchar YES NULL 注册设备名称
cw_is_person_audit WELCOME varchar YES NULL 欢迎语
cw_is_person_audit RESERVE_INFO varchar YES NULL 备用字段
cw_is_person_audit USER_PROPERTIES text YES NULL 用户填写字段
cw_is_person_audit USER_PROPERTIES_NAME text YES NULL 用户填写字段名称
cw_is_person_audit STATUS tinyint YES NULL 人员状态(0 有效 1 无效)默认为0
cw_is_person_audit AUDIT_STATUS tinyint YES NULL 审核状态:0审核中,1审核通过,2审核失败
cw_is_person_audit IS_DEL tinyint YES NULL 逻辑删除字段 0:未删除 1:已删除
cw_is_person_audit CREATE_USER_ID varchar YES NULL 创建人ID
cw_is_person_audit CREATE_TIME bigint YES NULL 创建日期 时间戳
cw_is_person_audit LAST_UPDATE_USER_ID varchar YES NULL 修改人员ID
cw_is_person_audit LAST_UPDATE_TIME bigint YES NULL 修改日期 时间戳
cw_is_person_audit EXT1 varchar YES NULL 扩展字段1
cw_is_person_audit EXT2 varchar YES NULL 扩展字段2
cw_is_person_audit EXT3 varchar YES NULL 扩展字段3
cw_is_person_audit EXT4 varchar YES NULL 扩展字段4
cw_is_person_audit EXT5 varchar YES NULL 扩展字段5
cw_is_person_audit EXT6 varchar YES NULL 扩展字段6
cw_is_person_audit EXT7 varchar YES NULL 扩展字段7
cw_is_person_audit EXT8 varchar YES NULL 扩展字段8
cw_is_person_audit EXT9 varchar YES NULL 扩展字段9
cw_is_person_audit EXT10 varchar YES NULL 扩展字段10
cw_is_person_audit EXT11 varchar YES NULL 扩展字段11
cw_is_person_audit EXT12 varchar YES NULL 扩展字段12
cw_is_person_audit EXT13 varchar YES NULL 扩展字段13
cw_is_person_audit EXT14 varchar YES NULL 扩展字段14
cw_is_person_audit EXT15 varchar YES NULL 扩展字段15
cw_is_person_audit EXT16 varchar YES NULL 扩展字段16
cw_is_person_audit EXT17 varchar YES NULL 扩展字段17
cw_is_person_audit EXT18 varchar YES NULL 扩展字段18
cw_is_person_audit EXT19 varchar YES NULL 扩展字段19
cw_is_person_audit EXT20 varchar YES NULL 扩展字段20
cw_is_person_audit EXT21 varchar YES NULL 扩展字段21
cw_is_person_audit EXT22 varchar YES NULL 扩展字段22
cw_is_person_audit EXT23 varchar YES NULL 扩展字段23
cw_is_person_audit EXT24 varchar YES NULL 扩展字段24
cw_is_person_audit EXT25 varchar YES NULL 扩展字段25
cw_is_person_audit EXT26 varchar YES NULL 扩展字段26
cw_is_person_audit EXT27 varchar YES NULL 扩展字段27
cw_is_person_audit EXT28 varchar YES NULL 扩展字段28
cw_is_person_audit EXT29 varchar YES NULL 扩展字段29
cw_is_person_audit EXT30 varchar YES NULL 扩展字段30
cw_is_person_audit EXT31 varchar YES NULL 扩展字段31
cw_is_person_audit EXT32 varchar YES NULL 扩展字段32
cw_is_person_audit EXT33 varchar YES NULL 扩展字段33
cw_is_person_audit EXT34 varchar YES NULL 扩展字段34
cw_is_person_audit EXT35 varchar YES NULL 扩展字段35
cw_is_person_audit EXT36 varchar YES NULL 扩展字段36
cw_is_person_audit EXT37 varchar YES NULL 扩展字段37
cw_is_person_audit EXT38 varchar YES NULL 扩展字段38
cw_is_person_audit EXT39 varchar YES NULL 扩展字段39
cw_is_person_audit EXT40 varchar YES NULL 扩展字段40
cw_is_person_batch_detail ID varchar NO NULL PRI 主键ID
cw_is_person_batch_detail BATCH_ID varchar NO NULL MUL 所属批次ID
cw_is_person_batch_detail FILE_NAME varchar NO NULL 文件名称
cw_is_person_batch_detail PERSON_NAME varchar YES NULL 人员姓名
cw_is_person_batch_detail STATUS decimal NO NULL 状态(1 成功 2 失败)
cw_is_person_batch_detail REMARK varchar YES NULL 描述信息
cw_is_person_batch_detail CREATE_TIME decimal YES NULL 创建时间,时间戳
cw_is_person_batch_detail CREATE_USER_ID varchar YES NULL 创建用户ID
cw_is_person_batch_import ID varchar NO NULL 主键ID
cw_is_person_batch_import BUSINESS_ID varchar YES NULL 企业ID
cw_is_person_batch_import BATCH_NO varchar NO NULL 批次号
cw_is_person_batch_import TYPE decimal NO NULL 导入类型(1.文件前端上传,2.服务器文件路径,3.服务器图片生成 )
cw_is_person_batch_import FILE_NAME varchar NO NULL 文件名称
cw_is_person_batch_import FILE_PATH varchar YES NULL 文件路径
cw_is_person_batch_import FINISH_TIME decimal YES NULL 结束时间,时间戳
cw_is_person_batch_import TOTAL_COUNT decimal YES NULL 总数
cw_is_person_batch_import CURRENT_COUNT decimal YES NULL 当前已完成数
cw_is_person_batch_import REMARK varchar YES NULL 描述信息
cw_is_person_batch_import STATUS decimal NO NULL 状态(1.未开始,2.进行中,3.已完成,4.异常)
cw_is_person_batch_import CREATE_TIME decimal YES NULL 创建时间,时间戳
cw_is_person_batch_import CREATE_USER_ID varchar YES NULL 创建用户ID
cw_is_person_batch_import OPERATION varchar YES NULL 操作类型(new 新增,update 更新)
cw_is_person_batch_import LOGIN_NAME varchar YES NULL 登录名称
cw_is_person_label_ref ID varchar NO NULL PRI 主键ID
cw_is_person_label_ref PERSON_ID varchar NO NULL MUL 人员ID
cw_is_person_label_ref LABEL_ID varchar NO NULL MUL 标签主键ID
cw_is_person_label_ref CREATE_TIME decimal YES NULL 创建日期 时间戳
cw_is_person_label_ref CREATE_USER_ID varchar YES NULL 创建人ID
cw_is_person_label_ref LAST_UPDATE_TIME decimal YES NULL 修改日期 时间戳
cw_is_person_label_ref LAST_UPDATE_USER_ID varchar YES NULL 修改人员ID
cw_is_person_organization_ref ID varchar NO NULL PRI 主键ID
cw_is_person_organization_ref PERSON_ID varchar NO NULL MUL 人员ID
cw_is_person_organization_ref ORG_ID varchar NO NULL MUL 组织ID
cw_is_person_organization_ref CREATE_TIME decimal YES NULL 创建日期 时间戳
cw_is_person_organization_ref CREATE_USER_ID varchar YES NULL 创建人ID
cw_is_person_organization_ref LAST_UPDATE_TIME decimal YES NULL 修改日期 时间戳
cw_is_person_organization_ref LAST_UPDATE_USER_ID varchar YES NULL 修改人员ID
cw_is_person_properties ID varchar NO NULL PRI 主键
cw_is_person_properties BUSINESS_ID varchar YES NULL 企业ID
cw_is_person_properties CODE varchar YES NULL 编号
cw_is_person_properties NAME varchar YES NULL 名称
cw_is_person_properties TYPE smallint YES NULL 输入类型 1 字符串 2 选择 3 时间 4 文件上传
cw_is_person_properties STATUS tinyint YES 0 (0 有效 1 无效)默认为0
cw_is_person_properties HAS_SYS_ACCOUNT tinyint YES 0 是否作为系统账号 0 不可以 1 可以
cw_is_person_properties HAS_SYS_ACCOUNT_AVAILABLE tinyint YES 0 是否可以作为系统账号字段 0 不可以 1 可以
cw_is_person_properties HAS_REQUIRED tinyint YES 0 是否必填 0 不要必填 1 必填
cw_is_person_properties HAS_DEFAULT tinyint YES 0 是否默认 0 不默认 1 默认
cw_is_person_properties ORDER_NUM int YES NULL 序号
cw_is_person_properties REMINDER varchar YES NULL 提示语
cw_is_person_properties CREATE_USER_ID varchar YES NULL 创建人
cw_is_person_properties CREATE_TIME bigint YES NULL 创建时间
cw_is_person_properties LAST_UPDATE_USER_ID varchar YES NULL 更新人
cw_is_person_properties LAST_UPDATE_TIME bigint YES NULL 更新时间
cw_is_person_properties ARRAY_DATA varchar YES NULL 如果类型是2,补充填写下拉列表,用逗号分隔
cw_is_person_properties HAS_MULTIPLE tinyint YES NULL 如果类型是2,补充填写是否多选 0 单选 1 复选
cw_is_person_properties_switch ID varchar NO NULL PRI 主键
cw_is_person_properties_switch BUSINESS_ID varchar YES NULL 企业ID
cw_is_person_properties_switch SWITCH_PARAM tinyint YES NULL 开启注册照优化
cw_is_person_properties_switch SIZE_PARAM int YES NULL 尺寸:1-1存,2-2存
cw_is_person_properties_switch SHAPE_PARAM tinyint YES NULL 形态变化
cw_is_person_properties_switch STATUS tinyint YES 0 (0 有效 1 无效)默认为0
cw_is_person_properties_switch SKIN_COLOR_PARAM tinyint YES NULL 肤色整体优化
cw_is_person_properties_switch CREATE_USER_ID varchar YES NULL 创建人
cw_is_person_properties_switch CREATE_TIME bigint YES NULL 创建时间
cw_is_person_properties_switch LAST_UPDATE_USER_ID varchar YES NULL 更新人
cw_is_person_properties_switch LAST_UPDATE_TIME bigint YES NULL 更新时间
cw_is_person_properties_switch DEFECTS_PARAM tinyint YES NULL 瑕疵优化
cw_is_person_properties_switch BACKGROUND_PARAM tinyint YES NULL 换背景
cw_is_person_properties_switch BACKGROUND_OBJECT int YES NULL 换背景底色:3-白色,4-蓝色,2-红色
cw_is_person_registry ID varchar NO PRI 主键ID
cw_is_person_registry BUSINESS_ID varchar NO 租户ID
cw_is_person_registry STATUS tinyint NO 1 开启设备注册(0 关闭 1 开启) 默认为1
cw_is_person_registry DEVICE_STATUS tinyint NO 0 设备注册审核(0 关闭 1 开启) 默认为0
cw_is_person_registry CODE_STATUS tinyint NO 1 扫码注册审核(0 关闭 1 开启) 默认为1
cw_is_person_registry ORGANIZATION_IDS varchar YES 注册默认组织ID列表(用英文逗号分隔)
cw_is_person_registry LABEL_IDS varchar YES 注册默认标签ID列表(用英文逗号分隔)
cw_is_person_registry CREATE_TIME decimal YES NULL 创建日期 时间戳
cw_is_person_registry CREATE_USER_ID varchar YES 创建人ID
cw_is_person_registry LAST_UPDATE_TIME decimal YES NULL 修改日期 时间戳
cw_is_person_registry LAST_UPDATE_USER_ID varchar YES 修改人员ID
cw_is_person_registry TYPE tinyint NO 0 注册类型(0:自助注册 1:人证注册) 默认为0
cw_is_person_registry_device ID varchar NO PRI 主键ID
cw_is_person_registry_device REGISTRY_ID varchar NO MUL 注册配置主键
cw_is_person_registry_device DEVICE_CODE varchar NO 设备编码
cw_is_person_registry_properties ID varchar NO PRI 主键ID
cw_is_person_registry_properties REGISTRY_ID varchar NO MUL 注册配置主键
cw_is_person_registry_properties PERSON_PROPERTY_ID varchar NO 人员属性表主键
cw_is_person_registry_properties BIND_PROPERTY_CODE varchar YES NULL 与人员属性关联的属性
cw_operation_log ID varchar NO NULL PRI 唯一标识
cw_operation_log BUSINESS_ID varchar YES NULL business id
cw_operation_log CREATE_USER_ID varchar YES NULL 创建者
cw_operation_log CREATE_USER_NAME varchar YES NULL 创建者名称
cw_operation_log CREATE_TIME decimal YES NULL 创建时间
cw_operation_log INTERFACE_NAME varchar YES NULL 接口名称
cw_operation_log CONTENT text YES NULL 请求报文
cw_operation_log MODULE varchar YES NULL 模块
cw_operation_log CALL_IP varchar YES NULL 来源ip
cw_task_job_everytime_details ID varchar YES NULL
cw_task_job_everytime_details JOB_NAME varchar YES NULL
cw_task_job_everytime_details JOB_STATUS decimal YES NULL
cw_task_job_everytime_details START_TIME decimal YES NULL
cw_task_job_everytime_details END_TIME decimal YES NULL
cw_task_job_everytime_details IP_ADDRESS varchar YES NULL
cw_task_job_everytime_details MAC_ADDRESS varchar YES NULL
org_floor org_id varchar NO NULL 机构id
org_floor zone_id varchar YES NULL 楼层id
org_floor is_all smallint NO NULL 是否全部查询:0-是,1-不是
org_floor zone_name varchar YES NULL 楼层名
1 mysql: [Warning] Using a password on the command line interface can be insecure.
2 cw_is_device_image_store ID varchar NO PRI 主键
3 cw_is_device_image_store DEVICE_ID varchar NO NULL MUL 设备Id
4 cw_is_device_image_store IMAGE_STORE_ID varchar NO NULL 图库Id
5 cw_is_device_image_store TYPE smallint NO NULL 设备图库变更类型(1:新增,2:删除)
6 cw_is_device_image_store CREATE_TIME bigint YES NULL 创建时间 时间戳
7 cw_is_device_image_store LAST_UPDATE_TIME bigint YES NULL 修改日期 时间戳
8 cw_is_device_image_store FINISH_PULL_TIME bigint YES NULL 结束拉取时间 时间戳
9 cw_is_device_image_store STATUS smallint NO 0 状态(0:未通知,1:已通知)
10 cw_is_device_person ID varchar NO NULL PRI 主键
11 cw_is_device_person DEVICE_ID varchar NO NULL MUL 设备ID
12 cw_is_device_person PERSON_ID varchar NO NULL 人员ID
13 cw_is_device_person TYPE smallint YES NULL 类型(0:正常,1:删除)
14 cw_is_device_person CREATE_TIME bigint YES NULL 创建时间 时间戳
15 cw_is_device_person LAST_UPDATE_TIME bigint YES NULL 修改日期 时间戳
16 cw_is_device_person_sync_log ID varchar NO PRI
17 cw_is_device_person_sync_log DEVICE_ID varchar NO NULL MUL 设备ID
18 cw_is_device_person_sync_log IMAGE_STORE_ID varchar NO NULL MUL 图库ID
19 cw_is_device_person_sync_log PERSON_ID varchar NO NULL 人员ID
20 cw_is_device_person_sync_log GROUP_PERSON_REF_ID varchar NO NULL MUL 图库人员关联ID
21 cw_is_device_person_sync_log IMAGE_ID varchar YES NULL 人脸ID
22 cw_is_device_person_sync_log STATUS smallint YES 0 同步状态(0:设备未拉取,1:设备已拉取,2:设备上报成功,3:设备上报失败)
23 cw_is_device_person_sync_log CODE varchar YES NULL 错误编码
24 cw_is_device_person_sync_log ERROR_MESSAGE varchar YES NULL 失败原因
25 cw_is_device_person_sync_log CREATE_TIME bigint YES NULL 创建时间 时间戳
26 cw_is_device_person_sync_log LAST_UPDATE_TIME bigint YES NULL 修改日期 时间戳(新增/修改人员信息时更新)
27 cw_is_device_person_sync_log COUNT smallint YES 0 计数器
28 cw_is_device_person_sync_log LAST_PULL_TIME bigint YES NULL 最近拉取时间 时间戳
29 cw_is_device_person_sync_log LAST_REPORT_TIME bigint YES NULL 最近上报时间 时间戳
30 cw_is_device_person_sync_log UPDATE_INFO varchar YES NULL 处理信息
31 cw_is_device_person_sync_log EXPIRY_BEGIN_DATE bigint YES NULL 人员有效期开始时间 时间戳
32 cw_is_device_person_sync_log EXPIRY_END_DATE bigint YES NULL 人员有效期结束时间 时间戳
33 cw_is_device_person_sync_log DEVICE_PERSON_REF_ID varchar NO NULL 设备-人员表主键
34 cw_is_device_person_sync_log IS_DEL smallint YES 0 逻辑删除字段 0未删除 1删除
35 cw_is_group_person_ref ID varchar NO NULL PRI
36 cw_is_group_person_ref IMAGE_STORE_ID varchar YES NULL MUL 图库id
37 cw_is_group_person_ref PERSON_ID varchar YES NULL MUL 人员id
38 cw_is_group_person_ref EXPIRY_BEGIN_DATE decimal YES NULL 人员有效期开始时间 时间戳
39 cw_is_group_person_ref EXPIRY_END_DATE decimal YES NULL 人员有效期结束时间 时间戳
40 cw_is_group_person_ref STATUS smallint YES 0 MUL 人员有效状态 -1删除、0正常、1失效
41 cw_is_group_person_ref CREATE_USER_ID varchar YES NULL
42 cw_is_group_person_ref CREATE_TIME decimal YES NULL
43 cw_is_group_person_ref LAST_UPDATE_USER_ID varchar YES NULL
44 cw_is_group_person_ref LAST_UPDATE_TIME decimal YES NULL
45 cw_is_group_person_ref IS_DEL smallint NO 0 MUL 逻辑删除字段 0未删除 1删除
46 cw_is_group_person_ref GENDER smallint YES NULL 性别
47 cw_is_group_person_ref AGE int YES NULL 年龄
48 cw_is_group_person_ref GROUP_TIME bigint YES NULL 入库时间
49 cw_is_group_person_ref GROUP_STATUS smallint YES NULL 0:未建模 1:建模中 2:建模完成 3:建模失败
50 cw_is_group_person_ref ERROR_MESSAGE varchar YES NULL 建模失败时的失败原因
51 cw_is_group_person_ref EXPIRY_BEGIN_DATE_STATUS smallint YES 0 人员有效开始时间状态(0:未处理 1:已处理)
52 cw_is_group_person_ref EXPIRY_END_DATE_STATUS smallint YES 0 人员有效期结束时间状态(0:未处理 1:已处理)
53 cw_is_group_person_ref VALID_DATE_CRON varchar YES NULL 多时间段cron表达式
54 cw_is_image_store_associated_ref ID varchar NO NULL PRI 唯一标识
55 cw_is_image_store_associated_ref IMAGE_STORE_ID varchar NO NULL MUL 图库id
56 cw_is_image_store_associated_ref ASSOCIATED_OBJECT_ID varchar NO NULL 关联对象id
57 cw_is_image_store_associated_ref ASSOCIATED_OBJECT_ID_TYPE int NO NULL 关联对象的类型,1:机构,2:标签,3:个人
58 cw_is_image_store_associated_ref ASSOCIATED_ACTION int YES NULL 0:包含,1:排除
59 cw_is_image_store_associated_ref EXPIRY_BEGIN_DATE decimal YES NULL 人员有效期开始时间 时间戳
60 cw_is_image_store_associated_ref EXPIRY_END_DATE decimal YES NULL 人员有效期结束时间 时间戳
61 cw_is_image_store_associated_ref CREATE_TIME decimal YES NULL
62 cw_is_image_store_associated_ref CREATE_USER_ID varchar YES NULL
63 cw_is_image_store_associated_ref LAST_UPDATE_TIME decimal YES NULL
64 cw_is_image_store_associated_ref LAST_UPDATE_USER_ID varchar YES NULL
65 cw_is_image_store_associated_ref VALID_DATE_CRON varchar YES NULL 多时间段cron表达式
66 cw_is_label ID varchar NO NULL PRI 唯一标识
67 cw_is_label NAME varchar YES NULL
68 cw_is_label CODE varchar NO NULL 编码
69 cw_is_label BUSINESS_ID varchar YES NULL business id
70 cw_is_label IS_DEL smallint YES NULL 0未删,1已删
71 cw_is_label ADD_TYPE smallint YES NULL 添加类型,0手动创建,1应用初始,2应用创建
72 cw_is_label CREATE_USER_ID varchar YES NULL 创建者
73 cw_is_label CREATE_TIME decimal YES NULL 创建时间
74 cw_is_label LAST_UPDATE_USER_ID varchar YES NULL 最后更新者
75 cw_is_label LAST_UPDATE_TIME decimal YES NULL 最后更新时间
76 cw_is_organization ID varchar NO NULL PRI 唯一标识
77 cw_is_organization NAME varchar YES NULL 机构名称
78 cw_is_organization ORDER_BY int YES NULL 同级排序字段
79 cw_is_organization PARENT_ID varchar YES NULL 上级机构id
80 cw_is_organization BUSINESS_ID varchar YES NULL
81 cw_is_organization TYPE_ID varchar YES NULL 机构类型ID
82 cw_is_organization IS_DEL smallint YES NULL 是否删除,0没有删除,1被删除
83 cw_is_organization CREATE_USER_ID varchar YES NULL 创建者
84 cw_is_organization CREATE_TIME decimal YES NULL 创建时间
85 cw_is_organization LAST_UPDATE_USER_ID varchar YES NULL 最后更新者
86 cw_is_organization LAST_UPDATE_TIME decimal YES NULL 最后更新时间
87 cw_is_organization EXT1 varchar YES NULL 扩展字段1
88 cw_is_organization EXT2 varchar YES NULL 扩展字段2
89 cw_is_organization EXT3 varchar YES NULL 扩展字段3
90 cw_is_organization EXT4 varchar YES NULL 扩展字段4
91 cw_is_organization EXT5 varchar YES NULL 扩展字段5
92 cw_is_organization EXT6 varchar YES NULL 扩展字段6
93 cw_is_organization EXT7 varchar YES NULL 扩展字段7
94 cw_is_organization EXT8 varchar YES NULL 扩展字段8
95 cw_is_organization EXT9 varchar YES NULL 扩展字段9
96 cw_is_organization EXT10 varchar YES NULL 扩展字段10
97 cw_is_organization EXT11 varchar YES NULL 扩展字段11
98 cw_is_organization EXT12 varchar YES NULL 扩展字段12
99 cw_is_organization EXT13 varchar YES NULL 扩展字段13
100 cw_is_organization EXT14 varchar YES NULL 扩展字段14
101 cw_is_organization EXT15 varchar YES NULL 扩展字段15
102 cw_is_organization EXT16 varchar YES NULL 扩展字段16
103 cw_is_organization EXT17 varchar YES NULL 扩展字段17
104 cw_is_organization EXT18 varchar YES NULL 扩展字段18
105 cw_is_organization EXT19 varchar YES NULL 扩展字段19
106 cw_is_organization EXT20 varchar YES NULL 扩展字段20
107 cw_is_organization EXT21 varchar YES NULL 扩展字段21
108 cw_is_organization EXT22 varchar YES NULL 扩展字段22
109 cw_is_organization EXT23 varchar YES NULL 扩展字段23
110 cw_is_organization EXT24 varchar YES NULL 扩展字段24
111 cw_is_organization EXT25 varchar YES NULL 扩展字段25
112 cw_is_organization EXT26 varchar YES NULL 扩展字段26
113 cw_is_organization EXT27 varchar YES NULL 扩展字段27
114 cw_is_organization EXT28 varchar YES NULL 扩展字段28
115 cw_is_organization EXT29 varchar YES NULL 扩展字段29
116 cw_is_organization EXT30 varchar YES NULL 扩展字段30
117 cw_is_organization IS_VALID int YES NULL 禁用启用,0=禁用,1=启用
118 cw_is_organization_area_ref ID varchar NO NULL 主键ID
119 cw_is_organization_area_ref ORG_ID varchar NO 机构ID
120 cw_is_organization_area_ref AREA_ID varchar NO 区域ID
121 cw_is_organization_area_ref REF_TYPE tinyint NO NULL 0所在区域 1派梯区域
122 cw_is_organization_area_ref BUSINESS_ID varchar NO 企业ID
123 cw_is_organization_area_ref CREATE_TIME bigint YES NULL 创建日期 时间戳
124 cw_is_organization_area_ref CREATE_USER_ID varchar YES NULL 创建人ID
125 cw_is_organization_area_ref LAST_UPDATE_TIME bigint YES NULL 修改日期 时间戳
126 cw_is_organization_area_ref LAST_UPDATE_USER_ID varchar YES NULL 修改人员ID
127 cw_is_organization_extend ID varchar NO
128 cw_is_organization_extend ORGANIZATION_ID varchar NO
129 cw_is_organization_extend BUSINESS_ID varchar NO NULL
130 cw_is_organization_extend EMPLOYEE_NUMBER smallint NO 0
131 cw_is_organization_extend ORG_CAR_NUMBER smallint NO 0
132 cw_is_organization_extend EMPLOYEE_CAR_NUMBER smallint NO 0
133 cw_is_organization_extend LEASEHOLD_BEGIN bigint YES NULL 起租日期
134 cw_is_organization_extend LEASEHOLD_END bigint YES NULL 到租日期
135 cw_is_organization_extend PAYMENT_STATE tinyint YES NULL
136 cw_is_organization_extend CARPORT_NUM smallint NO 0 车位数量
137 cw_is_organization_extend CREATE_USER_ID varchar YES
138 cw_is_organization_extend CREATE_TIME bigint YES NULL
139 cw_is_organization_extend LAST_UPDATE_USER_ID varchar YES
140 cw_is_organization_extend LAST_UPDATE_TIME bigint YES NULL
141 cw_is_organization_extend REMARK varchar YES
142 cw_is_organization_extend_detail ID varchar NO
143 cw_is_organization_extend_detail ORGANIZATION_ID varchar NO
144 cw_is_organization_extend_detail BUSINESS_ID varchar NO NULL
145 cw_is_organization_extend_detail UNIT_RENT decimal NO NULL
146 cw_is_organization_extend_detail WATER_AMOUNT decimal NO NULL
147 cw_is_organization_extend_detail ELECTRICITY_AMOUNT decimal NO NULL
148 cw_is_organization_extend_detail PROPERTY_AMOUNT decimal NO NULL
149 cw_is_organization_extend_detail BELONG_DATE bigint NO NULL
150 cw_is_organization_extend_detail PAY_TIME bigint NO NULL
151 cw_is_organization_extend_detail CREATE_USER_ID varchar NO
152 cw_is_organization_extend_detail CREATE_TIME bigint NO NULL
153 cw_is_organization_extend_detail LAST_UPDATE_USER_ID varchar NO
154 cw_is_organization_extend_detail LAST_UPDATE_TIME bigint NO NULL
155 cw_is_organization_extend_detail REMARK varchar NO
156 cw_is_organization_image_store APPLICATION_ID varchar NO NULL PRI 设备主键
157 cw_is_organization_image_store ORG_ID varchar NO NULL PRI 设备主键
158 cw_is_organization_image_store IMAGE_STORE_ID varchar NO NULL PRI 图库主键
159 cw_is_organization_type ID varchar NO NULL PRI 主键
160 cw_is_organization_type BUSINESS_ID varchar YES NULL 企业ID
161 cw_is_organization_type CODE varchar YES NULL 编号
162 cw_is_organization_type NAME varchar YES NULL 名称
163 cw_is_organization_type HAS_LOWER_LEVEL tinyint YES 0 是否可以有下级机构 0 不可以 1 可以
164 cw_is_organization_type HAS_DEFAULT tinyint YES 0 是否是默认的 0 不是 1 是
165 cw_is_organization_type STATUS tinyint YES 0 状态(0 有效 1 无效)默认为0
166 cw_is_organization_type CREATE_USER_ID varchar YES NULL 创建人
167 cw_is_organization_type CREATE_TIME decimal YES NULL 创建时间
168 cw_is_organization_type LAST_UPDATE_USER_ID varchar YES NULL 更新人
169 cw_is_organization_type LAST_UPDATE_TIME decimal YES NULL 更新时间
170 cw_is_organization_type_properties ID varchar NO NULL PRI 主键
171 cw_is_organization_type_properties BUSINESS_ID varchar YES NULL 企业ID
172 cw_is_organization_type_properties ORGANIZATION_TYPE_ID varchar YES NULL 机构ID
173 cw_is_organization_type_properties CODE varchar YES NULL 编号
174 cw_is_organization_type_properties NAME varchar YES NULL 名称
175 cw_is_organization_type_properties STATUS tinyint YES 0 (0 有效 1 无效)默认为0
176 cw_is_organization_type_properties HAS_REQUIRED tinyint YES 0 是否必填 0 非必填 1 必填
177 cw_is_organization_type_properties ORDER_NUM int YES NULL 序号
178 cw_is_organization_type_properties CREATE_USER_ID varchar YES NULL 创建人
179 cw_is_organization_type_properties CREATE_TIME decimal YES NULL 创建时间
180 cw_is_organization_type_properties LAST_UPDATE_USER_ID varchar YES NULL 更新人
181 cw_is_organization_type_properties LAST_UPDATE_TIME decimal YES NULL 更新时间
182 cw_is_person ID varchar NO NULL PRI 主键ID
183 cw_is_person BUSINESS_ID varchar NO NULL MUL 企业ID
184 cw_is_person PERSON_CODE varchar YES NULL 人员CODE
185 cw_is_person NAME varchar YES NULL MUL 姓名
186 cw_is_person USER_NAME varchar YES NULL 用户名
187 cw_is_person PHONE varchar YES NULL 联系电话
188 cw_is_person STATUS smallint YES NULL 人员状态(0 有效 1 无效)默认为0
189 cw_is_person EXPIRY_BEGIN_DATE decimal YES NULL 人员有效期开始时间 时间戳
190 cw_is_person EXPIRY_END_DATE decimal YES NULL 人员有效期结束时间 时间戳
191 cw_is_person SHOW_PICTURE varchar YES NULL 人员展示照
192 cw_is_person COMPARE_PICTURE text YES NULL 人员比对照
193 cw_is_person IS_DEL smallint YES NULL MUL 逻辑删除字段 0:未删除 1:已删除
194 cw_is_person CREATE_TIME decimal YES NULL 创建日期 时间戳
195 cw_is_person CREATE_USER_ID varchar YES NULL 创建人ID
196 cw_is_person LAST_UPDATE_TIME decimal YES NULL 修改日期 时间戳
197 cw_is_person LAST_UPDATE_USER_ID varchar YES NULL 修改人员ID
198 cw_is_person EMAIL varchar YES NULL 邮箱
199 cw_is_person IMAGE_ID varchar YES NULL MUL 识别照
200 cw_is_person EXT1 varchar YES NULL 扩展字段1
201 cw_is_person EXT2 varchar YES NULL 扩展字段2
202 cw_is_person EXT3 varchar YES NULL 扩展字段3
203 cw_is_person EXT4 varchar YES NULL 扩展字段4
204 cw_is_person EXT5 varchar YES NULL 扩展字段5
205 cw_is_person EXT6 varchar YES NULL 扩展字段6
206 cw_is_person EXT7 varchar YES NULL 扩展字段7
207 cw_is_person EXT8 varchar YES NULL 扩展字段8
208 cw_is_person EXT9 varchar YES NULL 扩展字段9
209 cw_is_person EXT10 varchar YES NULL 扩展字段10
210 cw_is_person EXT11 varchar YES NULL 扩展字段11
211 cw_is_person EXT12 varchar YES NULL 扩展字段12
212 cw_is_person EXT13 varchar YES NULL 扩展字段13
213 cw_is_person EXT14 varchar YES NULL 扩展字段14
214 cw_is_person EXT15 varchar YES NULL 扩展字段15
215 cw_is_person EXT16 varchar YES NULL 扩展字段16
216 cw_is_person EXT17 varchar YES NULL 扩展字段17
217 cw_is_person EXT18 varchar YES NULL 扩展字段18
218 cw_is_person EXT19 varchar YES NULL 扩展字段19
219 cw_is_person EXT20 varchar YES NULL 扩展字段20
220 cw_is_person EXT21 varchar YES NULL 扩展字段21
221 cw_is_person EXT22 varchar YES NULL 扩展字段22
222 cw_is_person EXT23 varchar YES NULL 扩展字段23
223 cw_is_person EXT24 varchar YES NULL 扩展字段24
224 cw_is_person EXT25 varchar YES NULL 扩展字段25
225 cw_is_person EXT26 varchar YES NULL 扩展字段26
226 cw_is_person EXT27 varchar YES NULL 扩展字段27
227 cw_is_person EXT28 varchar YES NULL 扩展字段28
228 cw_is_person EXT29 varchar YES NULL 扩展字段29
229 cw_is_person EXT30 varchar YES NULL 扩展字段30
230 cw_is_person EXT31 varchar YES NULL 扩展字段31
231 cw_is_person EXT32 varchar YES NULL 扩展字段32
232 cw_is_person EXT33 varchar YES NULL 扩展字段33
233 cw_is_person EXT34 varchar YES NULL 扩展字段34
234 cw_is_person EXT35 varchar YES NULL 扩展字段35
235 cw_is_person EXT36 varchar YES NULL 扩展字段36
236 cw_is_person EXT37 varchar YES NULL 扩展字段37
237 cw_is_person EXT38 varchar YES NULL 扩展字段38
238 cw_is_person EXT39 varchar YES NULL 扩展字段39
239 cw_is_person EXT40 varchar YES NULL 扩展字段40
240 cw_is_person CREATE_SYS_ACCOUNT smallint NO 0 是否同步账号,1同步,0不同步
241 cw_is_person SYS_ACCOUNT_ID varchar YES NULL 系统账号ID
242 cw_is_person SOURCE smallint NO 1 人员来源 1页面管理 2抓拍
243 cw_is_person RESERVE_INFO varchar YES NULL 保留信息
244 cw_is_person WELCOME varchar YES NULL 欢迎语
245 cw_is_person IC_CARD_NO varchar YES NULL IC卡号
246 cw_is_person IC_CARD_TYPE varchar YES NULL IC卡类型
247 cw_is_person DEFAULT_FLOOR varchar YES NULL 默认楼层id
248 cw_is_person CHOOSE_FLOOR text YES NULL 选中的楼层
249 cw_is_person_audit ID varchar NO NULL PRI 主键ID
250 cw_is_person_audit BUSINESS_ID varchar NO NULL 企业ID
251 cw_is_person_audit NAME varchar NO NULL 姓名
252 cw_is_person_audit USER_NAME varchar YES NULL 用户名
253 cw_is_person_audit PERSON_CODE varchar YES NULL 人员CODE
254 cw_is_person_audit PHONE varchar YES NULL 联系电话
255 cw_is_person_audit EMAIL varchar YES NULL 邮箱
256 cw_is_person_audit IMAGE_ID varchar YES NULL 识别照
257 cw_is_person_audit COMPARE_PICTURE varchar YES NULL 人员比对照
258 cw_is_person_audit SHOW_PICTURE varchar YES NULL 人员展示照
259 cw_is_person_audit ORGANIZATIONIDS text YES NULL 所属机构
260 cw_is_person_audit ORGANIZATIONNAMES text YES NULL 所属机构名称
261 cw_is_person_audit LABELIDS text YES NULL 所属标签
262 cw_is_person_audit LABELNAMES text YES NULL 所属标签名称
263 cw_is_person_audit CREATE_SYS_ACCOUNT tinyint YES 0 是否同步创建账号,0 不创建 1 创建
264 cw_is_person_audit SYS_ACCOUNT_ID varchar YES NULL 系统账号ID
265 cw_is_person_audit IC_CARD_NO varchar YES NULL IC卡号
266 cw_is_person_audit IC_CARD_TYPE varchar YES NULL IC卡类型
267 cw_is_person_audit SOURCE tinyint NO NULL 来源(1:页面;2:抓拍;3:设备;4:扫码)
268 cw_is_person_audit DEVICE_CODE varchar YES NULL 注册设备编号
269 cw_is_person_audit DEVICE_NAME varchar YES NULL 注册设备名称
270 cw_is_person_audit WELCOME varchar YES NULL 欢迎语
271 cw_is_person_audit RESERVE_INFO varchar YES NULL 备用字段
272 cw_is_person_audit USER_PROPERTIES text YES NULL 用户填写字段
273 cw_is_person_audit USER_PROPERTIES_NAME text YES NULL 用户填写字段名称
274 cw_is_person_audit STATUS tinyint YES NULL 人员状态(0 有效 1 无效)默认为0
275 cw_is_person_audit AUDIT_STATUS tinyint YES NULL 审核状态:0审核中,1审核通过,2审核失败
276 cw_is_person_audit IS_DEL tinyint YES NULL 逻辑删除字段 0:未删除 1:已删除
277 cw_is_person_audit CREATE_USER_ID varchar YES NULL 创建人ID
278 cw_is_person_audit CREATE_TIME bigint YES NULL 创建日期 时间戳
279 cw_is_person_audit LAST_UPDATE_USER_ID varchar YES NULL 修改人员ID
280 cw_is_person_audit LAST_UPDATE_TIME bigint YES NULL 修改日期 时间戳
281 cw_is_person_audit EXT1 varchar YES NULL 扩展字段1
282 cw_is_person_audit EXT2 varchar YES NULL 扩展字段2
283 cw_is_person_audit EXT3 varchar YES NULL 扩展字段3
284 cw_is_person_audit EXT4 varchar YES NULL 扩展字段4
285 cw_is_person_audit EXT5 varchar YES NULL 扩展字段5
286 cw_is_person_audit EXT6 varchar YES NULL 扩展字段6
287 cw_is_person_audit EXT7 varchar YES NULL 扩展字段7
288 cw_is_person_audit EXT8 varchar YES NULL 扩展字段8
289 cw_is_person_audit EXT9 varchar YES NULL 扩展字段9
290 cw_is_person_audit EXT10 varchar YES NULL 扩展字段10
291 cw_is_person_audit EXT11 varchar YES NULL 扩展字段11
292 cw_is_person_audit EXT12 varchar YES NULL 扩展字段12
293 cw_is_person_audit EXT13 varchar YES NULL 扩展字段13
294 cw_is_person_audit EXT14 varchar YES NULL 扩展字段14
295 cw_is_person_audit EXT15 varchar YES NULL 扩展字段15
296 cw_is_person_audit EXT16 varchar YES NULL 扩展字段16
297 cw_is_person_audit EXT17 varchar YES NULL 扩展字段17
298 cw_is_person_audit EXT18 varchar YES NULL 扩展字段18
299 cw_is_person_audit EXT19 varchar YES NULL 扩展字段19
300 cw_is_person_audit EXT20 varchar YES NULL 扩展字段20
301 cw_is_person_audit EXT21 varchar YES NULL 扩展字段21
302 cw_is_person_audit EXT22 varchar YES NULL 扩展字段22
303 cw_is_person_audit EXT23 varchar YES NULL 扩展字段23
304 cw_is_person_audit EXT24 varchar YES NULL 扩展字段24
305 cw_is_person_audit EXT25 varchar YES NULL 扩展字段25
306 cw_is_person_audit EXT26 varchar YES NULL 扩展字段26
307 cw_is_person_audit EXT27 varchar YES NULL 扩展字段27
308 cw_is_person_audit EXT28 varchar YES NULL 扩展字段28
309 cw_is_person_audit EXT29 varchar YES NULL 扩展字段29
310 cw_is_person_audit EXT30 varchar YES NULL 扩展字段30
311 cw_is_person_audit EXT31 varchar YES NULL 扩展字段31
312 cw_is_person_audit EXT32 varchar YES NULL 扩展字段32
313 cw_is_person_audit EXT33 varchar YES NULL 扩展字段33
314 cw_is_person_audit EXT34 varchar YES NULL 扩展字段34
315 cw_is_person_audit EXT35 varchar YES NULL 扩展字段35
316 cw_is_person_audit EXT36 varchar YES NULL 扩展字段36
317 cw_is_person_audit EXT37 varchar YES NULL 扩展字段37
318 cw_is_person_audit EXT38 varchar YES NULL 扩展字段38
319 cw_is_person_audit EXT39 varchar YES NULL 扩展字段39
320 cw_is_person_audit EXT40 varchar YES NULL 扩展字段40
321 cw_is_person_batch_detail ID varchar NO NULL PRI 主键ID
322 cw_is_person_batch_detail BATCH_ID varchar NO NULL MUL 所属批次ID
323 cw_is_person_batch_detail FILE_NAME varchar NO NULL 文件名称
324 cw_is_person_batch_detail PERSON_NAME varchar YES NULL 人员姓名
325 cw_is_person_batch_detail STATUS decimal NO NULL 状态(1 成功 2 失败)
326 cw_is_person_batch_detail REMARK varchar YES NULL 描述信息
327 cw_is_person_batch_detail CREATE_TIME decimal YES NULL 创建时间,时间戳
328 cw_is_person_batch_detail CREATE_USER_ID varchar YES NULL 创建用户ID
329 cw_is_person_batch_import ID varchar NO NULL 主键ID
330 cw_is_person_batch_import BUSINESS_ID varchar YES NULL 企业ID
331 cw_is_person_batch_import BATCH_NO varchar NO NULL 批次号
332 cw_is_person_batch_import TYPE decimal NO NULL 导入类型(1.文件前端上传,2.服务器文件路径,3.服务器图片生成 )
333 cw_is_person_batch_import FILE_NAME varchar NO NULL 文件名称
334 cw_is_person_batch_import FILE_PATH varchar YES NULL 文件路径
335 cw_is_person_batch_import FINISH_TIME decimal YES NULL 结束时间,时间戳
336 cw_is_person_batch_import TOTAL_COUNT decimal YES NULL 总数
337 cw_is_person_batch_import CURRENT_COUNT decimal YES NULL 当前已完成数
338 cw_is_person_batch_import REMARK varchar YES NULL 描述信息
339 cw_is_person_batch_import STATUS decimal NO NULL 状态(1.未开始,2.进行中,3.已完成,4.异常)
340 cw_is_person_batch_import CREATE_TIME decimal YES NULL 创建时间,时间戳
341 cw_is_person_batch_import CREATE_USER_ID varchar YES NULL 创建用户ID
342 cw_is_person_batch_import OPERATION varchar YES NULL 操作类型(new 新增,update 更新)
343 cw_is_person_batch_import LOGIN_NAME varchar YES NULL 登录名称
344 cw_is_person_label_ref ID varchar NO NULL PRI 主键ID
345 cw_is_person_label_ref PERSON_ID varchar NO NULL MUL 人员ID
346 cw_is_person_label_ref LABEL_ID varchar NO NULL MUL 标签主键ID
347 cw_is_person_label_ref CREATE_TIME decimal YES NULL 创建日期 时间戳
348 cw_is_person_label_ref CREATE_USER_ID varchar YES NULL 创建人ID
349 cw_is_person_label_ref LAST_UPDATE_TIME decimal YES NULL 修改日期 时间戳
350 cw_is_person_label_ref LAST_UPDATE_USER_ID varchar YES NULL 修改人员ID
351 cw_is_person_organization_ref ID varchar NO NULL PRI 主键ID
352 cw_is_person_organization_ref PERSON_ID varchar NO NULL MUL 人员ID
353 cw_is_person_organization_ref ORG_ID varchar NO NULL MUL 组织ID
354 cw_is_person_organization_ref CREATE_TIME decimal YES NULL 创建日期 时间戳
355 cw_is_person_organization_ref CREATE_USER_ID varchar YES NULL 创建人ID
356 cw_is_person_organization_ref LAST_UPDATE_TIME decimal YES NULL 修改日期 时间戳
357 cw_is_person_organization_ref LAST_UPDATE_USER_ID varchar YES NULL 修改人员ID
358 cw_is_person_properties ID varchar NO NULL PRI 主键
359 cw_is_person_properties BUSINESS_ID varchar YES NULL 企业ID
360 cw_is_person_properties CODE varchar YES NULL 编号
361 cw_is_person_properties NAME varchar YES NULL 名称
362 cw_is_person_properties TYPE smallint YES NULL 输入类型 1 字符串 2 选择 3 时间 4 文件上传
363 cw_is_person_properties STATUS tinyint YES 0 (0 有效 1 无效)默认为0
364 cw_is_person_properties HAS_SYS_ACCOUNT tinyint YES 0 是否作为系统账号 0 不可以 1 可以
365 cw_is_person_properties HAS_SYS_ACCOUNT_AVAILABLE tinyint YES 0 是否可以作为系统账号字段 0 不可以 1 可以
366 cw_is_person_properties HAS_REQUIRED tinyint YES 0 是否必填 0 不要必填 1 必填
367 cw_is_person_properties HAS_DEFAULT tinyint YES 0 是否默认 0 不默认 1 默认
368 cw_is_person_properties ORDER_NUM int YES NULL 序号
369 cw_is_person_properties REMINDER varchar YES NULL 提示语
370 cw_is_person_properties CREATE_USER_ID varchar YES NULL 创建人
371 cw_is_person_properties CREATE_TIME bigint YES NULL 创建时间
372 cw_is_person_properties LAST_UPDATE_USER_ID varchar YES NULL 更新人
373 cw_is_person_properties LAST_UPDATE_TIME bigint YES NULL 更新时间
374 cw_is_person_properties ARRAY_DATA varchar YES NULL 如果类型是2,补充填写下拉列表,用逗号分隔
375 cw_is_person_properties HAS_MULTIPLE tinyint YES NULL 如果类型是2,补充填写是否多选 0 单选 1 复选
376 cw_is_person_properties_switch ID varchar NO NULL PRI 主键
377 cw_is_person_properties_switch BUSINESS_ID varchar YES NULL 企业ID
378 cw_is_person_properties_switch SWITCH_PARAM tinyint YES NULL 开启注册照优化
379 cw_is_person_properties_switch SIZE_PARAM int YES NULL 尺寸:1-1存,2-2存
380 cw_is_person_properties_switch SHAPE_PARAM tinyint YES NULL 形态变化
381 cw_is_person_properties_switch STATUS tinyint YES 0 (0 有效 1 无效)默认为0
382 cw_is_person_properties_switch SKIN_COLOR_PARAM tinyint YES NULL 肤色整体优化
383 cw_is_person_properties_switch CREATE_USER_ID varchar YES NULL 创建人
384 cw_is_person_properties_switch CREATE_TIME bigint YES NULL 创建时间
385 cw_is_person_properties_switch LAST_UPDATE_USER_ID varchar YES NULL 更新人
386 cw_is_person_properties_switch LAST_UPDATE_TIME bigint YES NULL 更新时间
387 cw_is_person_properties_switch DEFECTS_PARAM tinyint YES NULL 瑕疵优化
388 cw_is_person_properties_switch BACKGROUND_PARAM tinyint YES NULL 换背景
389 cw_is_person_properties_switch BACKGROUND_OBJECT int YES NULL 换背景底色:3-白色,4-蓝色,2-红色
390 cw_is_person_registry ID varchar NO PRI 主键ID
391 cw_is_person_registry BUSINESS_ID varchar NO 租户ID
392 cw_is_person_registry STATUS tinyint NO 1 开启设备注册(0 关闭 1 开启) 默认为1
393 cw_is_person_registry DEVICE_STATUS tinyint NO 0 设备注册审核(0 关闭 1 开启) 默认为0
394 cw_is_person_registry CODE_STATUS tinyint NO 1 扫码注册审核(0 关闭 1 开启) 默认为1
395 cw_is_person_registry ORGANIZATION_IDS varchar YES 注册默认组织ID列表(用英文逗号分隔)
396 cw_is_person_registry LABEL_IDS varchar YES 注册默认标签ID列表(用英文逗号分隔)
397 cw_is_person_registry CREATE_TIME decimal YES NULL 创建日期 时间戳
398 cw_is_person_registry CREATE_USER_ID varchar YES 创建人ID
399 cw_is_person_registry LAST_UPDATE_TIME decimal YES NULL 修改日期 时间戳
400 cw_is_person_registry LAST_UPDATE_USER_ID varchar YES 修改人员ID
401 cw_is_person_registry TYPE tinyint NO 0 注册类型(0:自助注册 1:人证注册) 默认为0
402 cw_is_person_registry_device ID varchar NO PRI 主键ID
403 cw_is_person_registry_device REGISTRY_ID varchar NO MUL 注册配置主键
404 cw_is_person_registry_device DEVICE_CODE varchar NO 设备编码
405 cw_is_person_registry_properties ID varchar NO PRI 主键ID
406 cw_is_person_registry_properties REGISTRY_ID varchar NO MUL 注册配置主键
407 cw_is_person_registry_properties PERSON_PROPERTY_ID varchar NO 人员属性表主键
408 cw_is_person_registry_properties BIND_PROPERTY_CODE varchar YES NULL 与人员属性关联的属性
409 cw_operation_log ID varchar NO NULL PRI 唯一标识
410 cw_operation_log BUSINESS_ID varchar YES NULL business id
411 cw_operation_log CREATE_USER_ID varchar YES NULL 创建者
412 cw_operation_log CREATE_USER_NAME varchar YES NULL 创建者名称
413 cw_operation_log CREATE_TIME decimal YES NULL 创建时间
414 cw_operation_log INTERFACE_NAME varchar YES NULL 接口名称
415 cw_operation_log CONTENT text YES NULL 请求报文
416 cw_operation_log MODULE varchar YES NULL 模块
417 cw_operation_log CALL_IP varchar YES NULL 来源ip
418 cw_task_job_everytime_details ID varchar YES NULL
419 cw_task_job_everytime_details JOB_NAME varchar YES NULL
420 cw_task_job_everytime_details JOB_STATUS decimal YES NULL
421 cw_task_job_everytime_details START_TIME decimal YES NULL
422 cw_task_job_everytime_details END_TIME decimal YES NULL
423 cw_task_job_everytime_details IP_ADDRESS varchar YES NULL
424 cw_task_job_everytime_details MAC_ADDRESS varchar YES NULL
425 org_floor org_id varchar NO NULL 机构id
426 org_floor zone_id varchar YES NULL 楼层id
427 org_floor is_all smallint NO NULL 是否全部查询:0-是,1-不是
428 org_floor zone_name varchar YES NULL 楼层名
@@ -0,0 +1,171 @@
mysql: [Warning] Using a password on the command line interface can be insecure.
cw_is_device_image_store PRIMARY ID 0 1
cw_is_device_image_store UNIQUE_KEY DEVICE_ID 0 1
cw_is_device_image_store UNIQUE_KEY IMAGE_STORE_ID 0 2
cw_is_device_person PRIMARY ID 0 1
cw_is_device_person UNIQUE_KEY DEVICE_ID 0 1
cw_is_device_person UNIQUE_KEY PERSON_ID 0 2
cw_is_device_person_sync_log IDX_DEVICE_STATUS DEVICE_ID 1 1
cw_is_device_person_sync_log IDX_DEVICE_STATUS GROUP_PERSON_REF_ID 1 2
cw_is_device_person_sync_log IDX_DEVICE_STATUS STATUS 1 3
cw_is_device_person_sync_log IDX_DEVICE_STATUS LAST_REPORT_TIME 1 4
cw_is_device_person_sync_log IDX_DEVICE_STATUS LAST_PULL_TIME 1 5
cw_is_device_person_sync_log IDX_DEVICE_STATUS LAST_UPDATE_TIME 1 6
cw_is_device_person_sync_log idx_dev_ps_syn_log_imgstroe_id_person_id IMAGE_STORE_ID 1 1
cw_is_device_person_sync_log idx_dev_ps_syn_log_imgstroe_id_person_id PERSON_ID 1 2
cw_is_device_person_sync_log IDX_GROUP_PERSON_REF GROUP_PERSON_REF_ID 1 1
cw_is_device_person_sync_log IDX_IMAGESTORE_STATUS IMAGE_STORE_ID 1 1
cw_is_device_person_sync_log IDX_IMAGESTORE_STATUS STATUS 1 2
cw_is_device_person_sync_log IDX_PERSON_UPDATE DEVICE_ID 1 1
cw_is_device_person_sync_log IDX_PERSON_UPDATE IMAGE_STORE_ID 1 2
cw_is_device_person_sync_log IDX_PERSON_UPDATE LAST_UPDATE_TIME 1 3
cw_is_device_person_sync_log IDX_PERSON_UPDATE PERSON_ID 1 4
cw_is_device_person_sync_log PRIMARY ID 0 1
cw_is_device_person_sync_log UNIQUE_KEY DEVICE_ID 0 1
cw_is_device_person_sync_log UNIQUE_KEY IMAGE_STORE_ID 0 2
cw_is_device_person_sync_log UNIQUE_KEY PERSON_ID 0 3
cw_is_group_person_ref IDX_IGPR_PEROSN_COUNT2 IMAGE_STORE_ID 1 1
cw_is_group_person_ref IDX_IGPR_PEROSN_COUNT2 STATUS 1 2
cw_is_group_person_ref IDX_IGPR_PERSON IMAGE_STORE_ID 1 1
cw_is_group_person_ref IDX_IGPR_PERSON PERSON_ID 1 2
cw_is_group_person_ref IDX_IGPR_PERSON_1 PERSON_ID 1 1
cw_is_group_person_ref IDX_IGPR_PERSON_COUNT IS_DEL 1 1
cw_is_group_person_ref IDX_IGPR_PERSON_COUNT IMAGE_STORE_ID 1 2
cw_is_group_person_ref IDX_IGPR_PERSON_UPDATE IMAGE_STORE_ID 1 1
cw_is_group_person_ref IDX_IGPR_PERSON_UPDATE LAST_UPDATE_TIME 1 2
cw_is_group_person_ref IDX_IGPR_PERSON_UPDATE PERSON_ID 1 3
cw_is_group_person_ref IDX_IGPR_STATUS_TIME STATUS 1 1
cw_is_group_person_ref IDX_IGPR_STATUS_TIME LAST_UPDATE_TIME 1 2
cw_is_group_person_ref PRIMARY ID 0 1
cw_is_image_store_associated_ref IDX_IMAGE_STORE_ASSOCIATED IMAGE_STORE_ID 1 1
cw_is_image_store_associated_ref IDX_IMAGE_STORE_ASSOCIATED ASSOCIATED_OBJECT_ID 1 2
cw_is_image_store_associated_ref IDX_IMAGE_STORE_ASSOCIATED ASSOCIATED_ACTION 1 3
cw_is_image_store_associated_ref PRIMARY ID 0 1
cw_is_label PRIMARY ID 0 1
cw_is_organization PRIMARY ID 0 1
cw_is_organization_image_store PRIMARY APPLICATION_ID 0 1
cw_is_organization_image_store PRIMARY ORG_ID 0 2
cw_is_organization_image_store PRIMARY IMAGE_STORE_ID 0 3
cw_is_organization_type PRIMARY ID 0 1
cw_is_organization_type_properties PRIMARY ID 0 1
cw_is_person IDX_CW_IS_PERSON_EMAIL BUSINESS_ID 1 1
cw_is_person IDX_CW_IS_PERSON_EMAIL EMAIL 1 2
cw_is_person IDX_CW_IS_PERSON_PERSON_CODE BUSINESS_ID 1 1
cw_is_person IDX_CW_IS_PERSON_PERSON_CODE PERSON_CODE 1 2
cw_is_person IDX_CW_IS_PERSON_PHONE BUSINESS_ID 1 1
cw_is_person IDX_CW_IS_PERSON_PHONE PHONE 1 2
cw_is_person IDX_CW_IS_PERSON_USER_NAME BUSINESS_ID 1 1
cw_is_person IDX_CW_IS_PERSON_USER_NAME USER_NAME 1 2
cw_is_person idx_imageId IMAGE_ID 1 1
cw_is_person IDX_IP_PAGE IS_DEL 1 1
cw_is_person IDX_IP_PAGE BUSINESS_ID 1 2
cw_is_person IDX_IP_PAGE LAST_UPDATE_TIME 1 3
cw_is_person IDX_IP_PAGE ID 1 4
cw_is_person IDX_IP_PAGE SOURCE 1 5
cw_is_person idx_is_person ID 0 1
cw_is_person IDX_IS_PERSON_NAME NAME 1 1
cw_is_person PRIMARY ID 0 1
cw_is_person_audit PRIMARY ID 0 1
cw_is_person_batch_detail IDX_CEBD_PAGE BATCH_ID 1 1
cw_is_person_batch_detail IDX_CEBD_PAGE CREATE_TIME 1 2
cw_is_person_batch_detail PRIMARY ID 0 1
cw_is_person_label_ref IDX_LABEL LABEL_ID 1 1
cw_is_person_label_ref IDX_PERSON PERSON_ID 1 1
cw_is_person_label_ref idx_pl_personid PERSON_ID 1 1
cw_is_person_label_ref PRIMARY ID 0 1
cw_is_person_organization_ref IDX_ORG ORG_ID 1 1
cw_is_person_organization_ref IDX_PERSON PERSON_ID 1 1
cw_is_person_organization_ref idx_po_person_id PERSON_ID 1 1
cw_is_person_organization_ref PRIMARY ID 0 1
cw_is_person_properties PRIMARY ID 0 1
cw_is_person_properties_switch PRIMARY ID 0 1
cw_is_person_registry PRIMARY ID 0 1
cw_is_person_registry_device PRIMARY ID 0 1
cw_is_person_registry_device UNIQUE_KEY REGISTRY_ID 0 1
cw_is_person_registry_device UNIQUE_KEY DEVICE_CODE 0 2
cw_is_person_registry_properties PRIMARY ID 0 1
cw_is_person_registry_properties UNIQUE_KEY REGISTRY_ID 0 1
cw_is_person_registry_properties UNIQUE_KEY PERSON_PROPERTY_ID 0 2
cw_operation_log PRIMARY ID 0 1
qrtz_blob_triggers PRIMARY SCHED_NAME 0 1
qrtz_blob_triggers PRIMARY TRIGGER_NAME 0 2
qrtz_blob_triggers PRIMARY TRIGGER_GROUP 0 3
qrtz_calendars PRIMARY SCHED_NAME 0 1
qrtz_calendars PRIMARY CALENDAR_NAME 0 2
qrtz_cron_triggers PRIMARY SCHED_NAME 0 1
qrtz_cron_triggers PRIMARY TRIGGER_NAME 0 2
qrtz_cron_triggers PRIMARY TRIGGER_GROUP 0 3
qrtz_fired_triggers IDX_QRTZ_FT_INST_JOB_REQ_RCVRY INSTANCE_NAME 1 1
qrtz_fired_triggers IDX_QRTZ_FT_INST_JOB_REQ_RCVRY SCHED_NAME 1 2
qrtz_fired_triggers IDX_QRTZ_FT_INST_JOB_REQ_RCVRY REQUESTS_RECOVERY 1 3
qrtz_fired_triggers IDX_QRTZ_FT_JG SCHED_NAME 1 1
qrtz_fired_triggers IDX_QRTZ_FT_JG JOB_GROUP 1 2
qrtz_fired_triggers IDX_QRTZ_FT_J_G JOB_NAME 1 1
qrtz_fired_triggers IDX_QRTZ_FT_J_G SCHED_NAME 1 2
qrtz_fired_triggers IDX_QRTZ_FT_J_G JOB_GROUP 1 3
qrtz_fired_triggers IDX_QRTZ_FT_TG SCHED_NAME 1 1
qrtz_fired_triggers IDX_QRTZ_FT_TG TRIGGER_GROUP 1 2
qrtz_fired_triggers IDX_QRTZ_FT_TRIG_INST_NAME SCHED_NAME 1 1
qrtz_fired_triggers IDX_QRTZ_FT_TRIG_INST_NAME INSTANCE_NAME 1 2
qrtz_fired_triggers IDX_QRTZ_FT_T_G SCHED_NAME 1 1
qrtz_fired_triggers IDX_QRTZ_FT_T_G TRIGGER_NAME 1 2
qrtz_fired_triggers IDX_QRTZ_FT_T_G TRIGGER_GROUP 1 3
qrtz_fired_triggers PRIMARY SCHED_NAME 0 1
qrtz_fired_triggers PRIMARY ENTRY_ID 0 2
qrtz_job_details IDX_QRTZ_J_GRP SCHED_NAME 1 1
qrtz_job_details IDX_QRTZ_J_GRP JOB_GROUP 1 2
qrtz_job_details IDX_QRTZ_J_REQ_RECOVERY SCHED_NAME 1 1
qrtz_job_details IDX_QRTZ_J_REQ_RECOVERY REQUESTS_RECOVERY 1 2
qrtz_job_details PRIMARY SCHED_NAME 0 1
qrtz_job_details PRIMARY JOB_NAME 0 2
qrtz_job_details PRIMARY JOB_GROUP 0 3
qrtz_locks PRIMARY SCHED_NAME 0 1
qrtz_locks PRIMARY LOCK_NAME 0 2
qrtz_paused_trigger_grps PRIMARY SCHED_NAME 0 1
qrtz_paused_trigger_grps PRIMARY TRIGGER_GROUP 0 2
qrtz_scheduler_state PRIMARY SCHED_NAME 0 1
qrtz_scheduler_state PRIMARY INSTANCE_NAME 0 2
qrtz_simple_triggers PRIMARY SCHED_NAME 0 1
qrtz_simple_triggers PRIMARY TRIGGER_NAME 0 2
qrtz_simple_triggers PRIMARY TRIGGER_GROUP 0 3
qrtz_simprop_triggers PRIMARY SCHED_NAME 0 1
qrtz_simprop_triggers PRIMARY TRIGGER_NAME 0 2
qrtz_simprop_triggers PRIMARY TRIGGER_GROUP 0 3
qrtz_triggers IDX_QRTZ_T_C CALENDAR_NAME 1 1
qrtz_triggers IDX_QRTZ_T_C SCHED_NAME 1 2
qrtz_triggers IDX_QRTZ_T_G TRIGGER_GROUP 1 1
qrtz_triggers IDX_QRTZ_T_G SCHED_NAME 1 2
qrtz_triggers IDX_QRTZ_T_JG JOB_GROUP 1 1
qrtz_triggers IDX_QRTZ_T_JG SCHED_NAME 1 2
qrtz_triggers IDX_QRTZ_T_NEXT_FIRE_TIME NEXT_FIRE_TIME 1 1
qrtz_triggers IDX_QRTZ_T_NEXT_FIRE_TIME SCHED_NAME 1 2
qrtz_triggers IDX_QRTZ_T_NFT_MISFIRE SCHED_NAME 1 1
qrtz_triggers IDX_QRTZ_T_NFT_MISFIRE MISFIRE_INSTR 1 2
qrtz_triggers IDX_QRTZ_T_NFT_MISFIRE NEXT_FIRE_TIME 1 3
qrtz_triggers IDX_QRTZ_T_NFT_ST NEXT_FIRE_TIME 1 1
qrtz_triggers IDX_QRTZ_T_NFT_ST SCHED_NAME 1 2
qrtz_triggers IDX_QRTZ_T_NFT_ST TRIGGER_STATE 1 3
qrtz_triggers IDX_QRTZ_T_NFT_ST_MISFIRE NEXT_FIRE_TIME 1 1
qrtz_triggers IDX_QRTZ_T_NFT_ST_MISFIRE TRIGGER_STATE 1 2
qrtz_triggers IDX_QRTZ_T_NFT_ST_MISFIRE MISFIRE_INSTR 1 3
qrtz_triggers IDX_QRTZ_T_NFT_ST_MISFIRE SCHED_NAME 1 4
qrtz_triggers IDX_QRTZ_T_NFT_ST_MISFIRE_GRP TRIGGER_GROUP 1 1
qrtz_triggers IDX_QRTZ_T_NFT_ST_MISFIRE_GRP SCHED_NAME 1 2
qrtz_triggers IDX_QRTZ_T_NFT_ST_MISFIRE_GRP MISFIRE_INSTR 1 3
qrtz_triggers IDX_QRTZ_T_NFT_ST_MISFIRE_GRP NEXT_FIRE_TIME 1 4
qrtz_triggers IDX_QRTZ_T_NFT_ST_MISFIRE_GRP TRIGGER_STATE 1 5
qrtz_triggers IDX_QRTZ_T_N_G_STATE SCHED_NAME 1 1
qrtz_triggers IDX_QRTZ_T_N_G_STATE TRIGGER_STATE 1 2
qrtz_triggers IDX_QRTZ_T_N_G_STATE TRIGGER_GROUP 1 3
qrtz_triggers IDX_QRTZ_T_N_STATE TRIGGER_STATE 1 1
qrtz_triggers IDX_QRTZ_T_N_STATE TRIGGER_NAME 1 2
qrtz_triggers IDX_QRTZ_T_N_STATE SCHED_NAME 1 3
qrtz_triggers IDX_QRTZ_T_N_STATE TRIGGER_GROUP 1 4
qrtz_triggers IDX_QRTZ_T_STATE TRIGGER_STATE 1 1
qrtz_triggers IDX_QRTZ_T_STATE SCHED_NAME 1 2
qrtz_triggers PRIMARY SCHED_NAME 0 1
qrtz_triggers PRIMARY TRIGGER_NAME 0 2
qrtz_triggers PRIMARY TRIGGER_GROUP 0 3
qrtz_triggers SYS_C0012788 SCHED_NAME 1 1
qrtz_triggers SYS_C0012788 JOB_NAME 1 2
qrtz_triggers SYS_C0012788 JOB_GROUP 1 3
1 mysql: [Warning] Using a password on the command line interface can be insecure.
2 cw_is_device_image_store PRIMARY ID 0 1
3 cw_is_device_image_store UNIQUE_KEY DEVICE_ID 0 1
4 cw_is_device_image_store UNIQUE_KEY IMAGE_STORE_ID 0 2
5 cw_is_device_person PRIMARY ID 0 1
6 cw_is_device_person UNIQUE_KEY DEVICE_ID 0 1
7 cw_is_device_person UNIQUE_KEY PERSON_ID 0 2
8 cw_is_device_person_sync_log IDX_DEVICE_STATUS DEVICE_ID 1 1
9 cw_is_device_person_sync_log IDX_DEVICE_STATUS GROUP_PERSON_REF_ID 1 2
10 cw_is_device_person_sync_log IDX_DEVICE_STATUS STATUS 1 3
11 cw_is_device_person_sync_log IDX_DEVICE_STATUS LAST_REPORT_TIME 1 4
12 cw_is_device_person_sync_log IDX_DEVICE_STATUS LAST_PULL_TIME 1 5
13 cw_is_device_person_sync_log IDX_DEVICE_STATUS LAST_UPDATE_TIME 1 6
14 cw_is_device_person_sync_log idx_dev_ps_syn_log_imgstroe_id_person_id IMAGE_STORE_ID 1 1
15 cw_is_device_person_sync_log idx_dev_ps_syn_log_imgstroe_id_person_id PERSON_ID 1 2
16 cw_is_device_person_sync_log IDX_GROUP_PERSON_REF GROUP_PERSON_REF_ID 1 1
17 cw_is_device_person_sync_log IDX_IMAGESTORE_STATUS IMAGE_STORE_ID 1 1
18 cw_is_device_person_sync_log IDX_IMAGESTORE_STATUS STATUS 1 2
19 cw_is_device_person_sync_log IDX_PERSON_UPDATE DEVICE_ID 1 1
20 cw_is_device_person_sync_log IDX_PERSON_UPDATE IMAGE_STORE_ID 1 2
21 cw_is_device_person_sync_log IDX_PERSON_UPDATE LAST_UPDATE_TIME 1 3
22 cw_is_device_person_sync_log IDX_PERSON_UPDATE PERSON_ID 1 4
23 cw_is_device_person_sync_log PRIMARY ID 0 1
24 cw_is_device_person_sync_log UNIQUE_KEY DEVICE_ID 0 1
25 cw_is_device_person_sync_log UNIQUE_KEY IMAGE_STORE_ID 0 2
26 cw_is_device_person_sync_log UNIQUE_KEY PERSON_ID 0 3
27 cw_is_group_person_ref IDX_IGPR_PEROSN_COUNT2 IMAGE_STORE_ID 1 1
28 cw_is_group_person_ref IDX_IGPR_PEROSN_COUNT2 STATUS 1 2
29 cw_is_group_person_ref IDX_IGPR_PERSON IMAGE_STORE_ID 1 1
30 cw_is_group_person_ref IDX_IGPR_PERSON PERSON_ID 1 2
31 cw_is_group_person_ref IDX_IGPR_PERSON_1 PERSON_ID 1 1
32 cw_is_group_person_ref IDX_IGPR_PERSON_COUNT IS_DEL 1 1
33 cw_is_group_person_ref IDX_IGPR_PERSON_COUNT IMAGE_STORE_ID 1 2
34 cw_is_group_person_ref IDX_IGPR_PERSON_UPDATE IMAGE_STORE_ID 1 1
35 cw_is_group_person_ref IDX_IGPR_PERSON_UPDATE LAST_UPDATE_TIME 1 2
36 cw_is_group_person_ref IDX_IGPR_PERSON_UPDATE PERSON_ID 1 3
37 cw_is_group_person_ref IDX_IGPR_STATUS_TIME STATUS 1 1
38 cw_is_group_person_ref IDX_IGPR_STATUS_TIME LAST_UPDATE_TIME 1 2
39 cw_is_group_person_ref PRIMARY ID 0 1
40 cw_is_image_store_associated_ref IDX_IMAGE_STORE_ASSOCIATED IMAGE_STORE_ID 1 1
41 cw_is_image_store_associated_ref IDX_IMAGE_STORE_ASSOCIATED ASSOCIATED_OBJECT_ID 1 2
42 cw_is_image_store_associated_ref IDX_IMAGE_STORE_ASSOCIATED ASSOCIATED_ACTION 1 3
43 cw_is_image_store_associated_ref PRIMARY ID 0 1
44 cw_is_label PRIMARY ID 0 1
45 cw_is_organization PRIMARY ID 0 1
46 cw_is_organization_image_store PRIMARY APPLICATION_ID 0 1
47 cw_is_organization_image_store PRIMARY ORG_ID 0 2
48 cw_is_organization_image_store PRIMARY IMAGE_STORE_ID 0 3
49 cw_is_organization_type PRIMARY ID 0 1
50 cw_is_organization_type_properties PRIMARY ID 0 1
51 cw_is_person IDX_CW_IS_PERSON_EMAIL BUSINESS_ID 1 1
52 cw_is_person IDX_CW_IS_PERSON_EMAIL EMAIL 1 2
53 cw_is_person IDX_CW_IS_PERSON_PERSON_CODE BUSINESS_ID 1 1
54 cw_is_person IDX_CW_IS_PERSON_PERSON_CODE PERSON_CODE 1 2
55 cw_is_person IDX_CW_IS_PERSON_PHONE BUSINESS_ID 1 1
56 cw_is_person IDX_CW_IS_PERSON_PHONE PHONE 1 2
57 cw_is_person IDX_CW_IS_PERSON_USER_NAME BUSINESS_ID 1 1
58 cw_is_person IDX_CW_IS_PERSON_USER_NAME USER_NAME 1 2
59 cw_is_person idx_imageId IMAGE_ID 1 1
60 cw_is_person IDX_IP_PAGE IS_DEL 1 1
61 cw_is_person IDX_IP_PAGE BUSINESS_ID 1 2
62 cw_is_person IDX_IP_PAGE LAST_UPDATE_TIME 1 3
63 cw_is_person IDX_IP_PAGE ID 1 4
64 cw_is_person IDX_IP_PAGE SOURCE 1 5
65 cw_is_person idx_is_person ID 0 1
66 cw_is_person IDX_IS_PERSON_NAME NAME 1 1
67 cw_is_person PRIMARY ID 0 1
68 cw_is_person_audit PRIMARY ID 0 1
69 cw_is_person_batch_detail IDX_CEBD_PAGE BATCH_ID 1 1
70 cw_is_person_batch_detail IDX_CEBD_PAGE CREATE_TIME 1 2
71 cw_is_person_batch_detail PRIMARY ID 0 1
72 cw_is_person_label_ref IDX_LABEL LABEL_ID 1 1
73 cw_is_person_label_ref IDX_PERSON PERSON_ID 1 1
74 cw_is_person_label_ref idx_pl_personid PERSON_ID 1 1
75 cw_is_person_label_ref PRIMARY ID 0 1
76 cw_is_person_organization_ref IDX_ORG ORG_ID 1 1
77 cw_is_person_organization_ref IDX_PERSON PERSON_ID 1 1
78 cw_is_person_organization_ref idx_po_person_id PERSON_ID 1 1
79 cw_is_person_organization_ref PRIMARY ID 0 1
80 cw_is_person_properties PRIMARY ID 0 1
81 cw_is_person_properties_switch PRIMARY ID 0 1
82 cw_is_person_registry PRIMARY ID 0 1
83 cw_is_person_registry_device PRIMARY ID 0 1
84 cw_is_person_registry_device UNIQUE_KEY REGISTRY_ID 0 1
85 cw_is_person_registry_device UNIQUE_KEY DEVICE_CODE 0 2
86 cw_is_person_registry_properties PRIMARY ID 0 1
87 cw_is_person_registry_properties UNIQUE_KEY REGISTRY_ID 0 1
88 cw_is_person_registry_properties UNIQUE_KEY PERSON_PROPERTY_ID 0 2
89 cw_operation_log PRIMARY ID 0 1
90 qrtz_blob_triggers PRIMARY SCHED_NAME 0 1
91 qrtz_blob_triggers PRIMARY TRIGGER_NAME 0 2
92 qrtz_blob_triggers PRIMARY TRIGGER_GROUP 0 3
93 qrtz_calendars PRIMARY SCHED_NAME 0 1
94 qrtz_calendars PRIMARY CALENDAR_NAME 0 2
95 qrtz_cron_triggers PRIMARY SCHED_NAME 0 1
96 qrtz_cron_triggers PRIMARY TRIGGER_NAME 0 2
97 qrtz_cron_triggers PRIMARY TRIGGER_GROUP 0 3
98 qrtz_fired_triggers IDX_QRTZ_FT_INST_JOB_REQ_RCVRY INSTANCE_NAME 1 1
99 qrtz_fired_triggers IDX_QRTZ_FT_INST_JOB_REQ_RCVRY SCHED_NAME 1 2
100 qrtz_fired_triggers IDX_QRTZ_FT_INST_JOB_REQ_RCVRY REQUESTS_RECOVERY 1 3
101 qrtz_fired_triggers IDX_QRTZ_FT_JG SCHED_NAME 1 1
102 qrtz_fired_triggers IDX_QRTZ_FT_JG JOB_GROUP 1 2
103 qrtz_fired_triggers IDX_QRTZ_FT_J_G JOB_NAME 1 1
104 qrtz_fired_triggers IDX_QRTZ_FT_J_G SCHED_NAME 1 2
105 qrtz_fired_triggers IDX_QRTZ_FT_J_G JOB_GROUP 1 3
106 qrtz_fired_triggers IDX_QRTZ_FT_TG SCHED_NAME 1 1
107 qrtz_fired_triggers IDX_QRTZ_FT_TG TRIGGER_GROUP 1 2
108 qrtz_fired_triggers IDX_QRTZ_FT_TRIG_INST_NAME SCHED_NAME 1 1
109 qrtz_fired_triggers IDX_QRTZ_FT_TRIG_INST_NAME INSTANCE_NAME 1 2
110 qrtz_fired_triggers IDX_QRTZ_FT_T_G SCHED_NAME 1 1
111 qrtz_fired_triggers IDX_QRTZ_FT_T_G TRIGGER_NAME 1 2
112 qrtz_fired_triggers IDX_QRTZ_FT_T_G TRIGGER_GROUP 1 3
113 qrtz_fired_triggers PRIMARY SCHED_NAME 0 1
114 qrtz_fired_triggers PRIMARY ENTRY_ID 0 2
115 qrtz_job_details IDX_QRTZ_J_GRP SCHED_NAME 1 1
116 qrtz_job_details IDX_QRTZ_J_GRP JOB_GROUP 1 2
117 qrtz_job_details IDX_QRTZ_J_REQ_RECOVERY SCHED_NAME 1 1
118 qrtz_job_details IDX_QRTZ_J_REQ_RECOVERY REQUESTS_RECOVERY 1 2
119 qrtz_job_details PRIMARY SCHED_NAME 0 1
120 qrtz_job_details PRIMARY JOB_NAME 0 2
121 qrtz_job_details PRIMARY JOB_GROUP 0 3
122 qrtz_locks PRIMARY SCHED_NAME 0 1
123 qrtz_locks PRIMARY LOCK_NAME 0 2
124 qrtz_paused_trigger_grps PRIMARY SCHED_NAME 0 1
125 qrtz_paused_trigger_grps PRIMARY TRIGGER_GROUP 0 2
126 qrtz_scheduler_state PRIMARY SCHED_NAME 0 1
127 qrtz_scheduler_state PRIMARY INSTANCE_NAME 0 2
128 qrtz_simple_triggers PRIMARY SCHED_NAME 0 1
129 qrtz_simple_triggers PRIMARY TRIGGER_NAME 0 2
130 qrtz_simple_triggers PRIMARY TRIGGER_GROUP 0 3
131 qrtz_simprop_triggers PRIMARY SCHED_NAME 0 1
132 qrtz_simprop_triggers PRIMARY TRIGGER_NAME 0 2
133 qrtz_simprop_triggers PRIMARY TRIGGER_GROUP 0 3
134 qrtz_triggers IDX_QRTZ_T_C CALENDAR_NAME 1 1
135 qrtz_triggers IDX_QRTZ_T_C SCHED_NAME 1 2
136 qrtz_triggers IDX_QRTZ_T_G TRIGGER_GROUP 1 1
137 qrtz_triggers IDX_QRTZ_T_G SCHED_NAME 1 2
138 qrtz_triggers IDX_QRTZ_T_JG JOB_GROUP 1 1
139 qrtz_triggers IDX_QRTZ_T_JG SCHED_NAME 1 2
140 qrtz_triggers IDX_QRTZ_T_NEXT_FIRE_TIME NEXT_FIRE_TIME 1 1
141 qrtz_triggers IDX_QRTZ_T_NEXT_FIRE_TIME SCHED_NAME 1 2
142 qrtz_triggers IDX_QRTZ_T_NFT_MISFIRE SCHED_NAME 1 1
143 qrtz_triggers IDX_QRTZ_T_NFT_MISFIRE MISFIRE_INSTR 1 2
144 qrtz_triggers IDX_QRTZ_T_NFT_MISFIRE NEXT_FIRE_TIME 1 3
145 qrtz_triggers IDX_QRTZ_T_NFT_ST NEXT_FIRE_TIME 1 1
146 qrtz_triggers IDX_QRTZ_T_NFT_ST SCHED_NAME 1 2
147 qrtz_triggers IDX_QRTZ_T_NFT_ST TRIGGER_STATE 1 3
148 qrtz_triggers IDX_QRTZ_T_NFT_ST_MISFIRE NEXT_FIRE_TIME 1 1
149 qrtz_triggers IDX_QRTZ_T_NFT_ST_MISFIRE TRIGGER_STATE 1 2
150 qrtz_triggers IDX_QRTZ_T_NFT_ST_MISFIRE MISFIRE_INSTR 1 3
151 qrtz_triggers IDX_QRTZ_T_NFT_ST_MISFIRE SCHED_NAME 1 4
152 qrtz_triggers IDX_QRTZ_T_NFT_ST_MISFIRE_GRP TRIGGER_GROUP 1 1
153 qrtz_triggers IDX_QRTZ_T_NFT_ST_MISFIRE_GRP SCHED_NAME 1 2
154 qrtz_triggers IDX_QRTZ_T_NFT_ST_MISFIRE_GRP MISFIRE_INSTR 1 3
155 qrtz_triggers IDX_QRTZ_T_NFT_ST_MISFIRE_GRP NEXT_FIRE_TIME 1 4
156 qrtz_triggers IDX_QRTZ_T_NFT_ST_MISFIRE_GRP TRIGGER_STATE 1 5
157 qrtz_triggers IDX_QRTZ_T_N_G_STATE SCHED_NAME 1 1
158 qrtz_triggers IDX_QRTZ_T_N_G_STATE TRIGGER_STATE 1 2
159 qrtz_triggers IDX_QRTZ_T_N_G_STATE TRIGGER_GROUP 1 3
160 qrtz_triggers IDX_QRTZ_T_N_STATE TRIGGER_STATE 1 1
161 qrtz_triggers IDX_QRTZ_T_N_STATE TRIGGER_NAME 1 2
162 qrtz_triggers IDX_QRTZ_T_N_STATE SCHED_NAME 1 3
163 qrtz_triggers IDX_QRTZ_T_N_STATE TRIGGER_GROUP 1 4
164 qrtz_triggers IDX_QRTZ_T_STATE TRIGGER_STATE 1 1
165 qrtz_triggers IDX_QRTZ_T_STATE SCHED_NAME 1 2
166 qrtz_triggers PRIMARY SCHED_NAME 0 1
167 qrtz_triggers PRIMARY TRIGGER_NAME 0 2
168 qrtz_triggers PRIMARY TRIGGER_GROUP 0 3
169 qrtz_triggers SYS_C0012788 SCHED_NAME 1 1
170 qrtz_triggers SYS_C0012788 JOB_NAME 1 2
171 qrtz_triggers SYS_C0012788 JOB_GROUP 1 3
@@ -0,0 +1,49 @@
=== cw_is_organization ===
+----------------------------------+-----------+----------+----------------------------------+----------------------------------+----------------------------------+--------+----------------------------------+---------------+----------------------------------+------------------+------+------+------+------+------+------+------+------+------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+----------+
| ID | NAME | ORDER_BY | PARENT_ID | BUSINESS_ID | TYPE_ID | IS_DEL | CREATE_USER_ID | CREATE_TIME | LAST_UPDATE_USER_ID | LAST_UPDATE_TIME | EXT1 | EXT2 | EXT3 | EXT4 | EXT5 | EXT6 | EXT7 | EXT8 | EXT9 | EXT10 | EXT11 | EXT12 | EXT13 | EXT14 | EXT15 | EXT16 | EXT17 | EXT18 | EXT19 | EXT20 | EXT21 | EXT22 | EXT23 | EXT24 | EXT25 | EXT26 | EXT27 | EXT28 | EXT29 | EXT30 | IS_VALID |
+----------------------------------+-----------+----------+----------------------------------+----------------------------------+----------------------------------+--------+----------------------------------+---------------+----------------------------------+------------------+------+------+------+------+------+------+------+------+------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+----------+
| fdeda9005dfa427da6bff924762917b7 | 617 | NULL | 99e9c6a09f534c0185e32664eb126be4 | 2524639890ba4f2cba9ba1a4eeaa4015 | 47f416aeae9f49f4a35bb22966b42181 | 0 | 9ac7fc11589e4b32b5eff0b9019f1ef5 | 1756690761453 | 9ac7fc11589e4b32b5eff0b9019f1ef5 | 1756690761453 | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | 1 |
| fd478ee4ffa240519657ff12b3d48726 | 基建部 | NULL | eef0a610fa9e4720a20c58aef2f229e3 | 2524639890ba4f2cba9ba1a4eeaa4015 | 47f416aeae9f49f4a35bb22966b42181 | 0 | 9ac7fc11589e4b32b5eff0b9019f1ef5 | 1701681239890 | 9ac7fc11589e4b32b5eff0b9019f1ef5 | 1701681239890 | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | 1 |
| fca1dd090e5d49eca3ee190bca014ca0 | 行政部 | NULL | a1d422625add4403b4e889a503cb2b12 | 2524639890ba4f2cba9ba1a4eeaa4015 | 47f416aeae9f49f4a35bb22966b42181 | 1 | 9ac7fc11589e4b32b5eff0b9019f1ef5 | 1690849497428 | 896fc73df1f2408886081ee8ab65bc21 | 1764814211814 | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | 1 |
+----------------------------------+-----------+----------+----------------------------------+----------------------------------+----------------------------------+--------+----------------------------------+---------------+----------------------------------+------------------+------+------+------+------+------+------+------+------+------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+----------+
=== cw_is_person ===
+--------------------+----------------------------------+-------------+-----------+--------------------+-------------+--------+-------------------+-----------------+--------------+---------------------------------+--------+---------------+----------------------------------+------------------+----------------------------------+-------+---------------------+------+------+------+------+------+------+------+------+------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+--------------------+----------------+--------+--------------+---------+------------+--------------+---------------+--------------+
| ID | BUSINESS_ID | PERSON_CODE | NAME | USER_NAME | PHONE | STATUS | EXPIRY_BEGIN_DATE | EXPIRY_END_DATE | SHOW_PICTURE | COMPARE_PICTURE | IS_DEL | CREATE_TIME | CREATE_USER_ID | LAST_UPDATE_TIME | LAST_UPDATE_USER_ID | EMAIL | IMAGE_ID | EXT1 | EXT2 | EXT3 | EXT4 | EXT5 | EXT6 | EXT7 | EXT8 | EXT9 | EXT10 | EXT11 | EXT12 | EXT13 | EXT14 | EXT15 | EXT16 | EXT17 | EXT18 | EXT19 | EXT20 | EXT21 | EXT22 | EXT23 | EXT24 | EXT25 | EXT26 | EXT27 | EXT28 | EXT29 | EXT30 | EXT31 | EXT32 | EXT33 | EXT34 | EXT35 | EXT36 | EXT37 | EXT38 | EXT39 | EXT40 | CREATE_SYS_ACCOUNT | SYS_ACCOUNT_ID | SOURCE | RESERVE_INFO | WELCOME | IC_CARD_NO | IC_CARD_TYPE | DEFAULT_FLOOR | CHOOSE_FLOOR |
+--------------------+----------------------------------+-------------+-----------+--------------------+-------------+--------+-------------------+-----------------+--------------+---------------------------------+--------+---------------+----------------------------------+------------------+----------------------------------+-------+---------------------+------+------+------+------+------+------+------+------+------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+--------------------+----------------+--------+--------------+---------+------------+--------------+---------------+--------------+
| 999998332677980160 | 2524639890ba4f2cba9ba1a4eeaa4015 | NULL | 蔡先生 | 999998333437149184 | 13929533370 | 0 | 1753154040000 | 1753183800000 | NULL | NULL | 1 | 1753154181778 | 6d1c78ee127b4883a4d4f914d344ce51 | 1753203600727 | 6d1c78ee127b4883a4d4f914d344ce51 | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | 0 | NULL | 1 | NULL | NULL | NULL | NULL | NULL | NULL |
| 999998240135180288 | 2524639890ba4f2cba9ba1a4eeaa4015 | NULL | 赫俊国 | 999998240101314560 | 13903615836 | 0 | 1753113600091 | 1753199999091 | NULL | aiot_default_999998240013242368 | 1 | 1753154159628 | default | 1753203600727 | default | NULL | 1947495814782308352 | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | 0 | NULL | 1 | NULL | NULL | NULL | NULL | NULL | NULL |
| 999997066723823616 | 2524639890ba4f2cba9ba1a4eeaa4015 | NULL | 黄贵明 | 999997066707169280 | 15920966886 | 0 | 1753113600128 | 1753199999128 | NULL | aiot_default_999997066593828864 | 1 | 1753153879843 | default | 1753203600727 | default | NULL | 1947494641274499072 | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | 0 | NULL | 1 | NULL | NULL | NULL | NULL | NULL | NULL |
+--------------------+----------------------------------+-------------+-----------+--------------------+-------------+--------+-------------------+-----------------+--------------+---------------------------------+--------+---------------+----------------------------------+------------------+----------------------------------+-------+---------------------+------+------+------+------+------+------+------+------+------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+--------------------+----------------+--------+--------------+---------+------------+--------------+---------------+--------------+
=== cw_is_person_organization_ref ===
+----------------------------------+---------------------+----------------------------------+---------------+----------------------------------+------------------+---------------------+
| ID | PERSON_ID | ORG_ID | CREATE_TIME | CREATE_USER_ID | LAST_UPDATE_TIME | LAST_UPDATE_USER_ID |
+----------------------------------+---------------------+----------------------------------+---------------+----------------------------------+------------------+---------------------+
| fffe7b4d5ce9427ea8703d9d568306c2 | 956535134721798144 | f5d90d608d1042c487bf18af58345d5c | 1742791747779 | 9ac7fc11589e4b32b5eff0b9019f1ef5 | NULL | NULL |
| fff80f46206942ecaa123365e5475f66 | 1069265515460378624 | 488b8ad049bb43408a6fbcc50bcb89ac | 1769668764966 | 9ac7fc11589e4b32b5eff0b9019f1ef5 | NULL | NULL |
| fff4a8bdc90442749a8f463e5f07ebd3 | 822522654509887488 | e7c6ad5429434ec7b8c159d44e126579 | 1711008815845 | 9ac7fc11589e4b32b5eff0b9019f1ef5 | NULL | NULL |
+----------------------------------+---------------------+----------------------------------+---------------+----------------------------------+------------------+---------------------+
=== cw_is_person_label_ref ===
+----------------------------------+--------------------+----------------------------------+---------------+----------------------------------+------------------+---------------------+
| ID | PERSON_ID | LABEL_ID | CREATE_TIME | CREATE_USER_ID | LAST_UPDATE_TIME | LAST_UPDATE_USER_ID |
+----------------------------------+--------------------+----------------------------------+---------------+----------------------------------+------------------+---------------------+
| ffea4b3636f0472cbc0104150371704a | 653604973099094016 | 7f1c603976294e06b3852eec9c2ca838 | 1761890229717 | 9ac7fc11589e4b32b5eff0b9019f1ef5 | NULL | NULL |
| ffe60133fbee47e2b477b068a0169148 | 721670500450914304 | fe77c039dcbe40178192af1f6e1c3ab9 | 1756688047289 | 9ac7fc11589e4b32b5eff0b9019f1ef5 | NULL | NULL |
| ffd8b3622a6846adb8c7193077e54d8f | 721662116968370176 | 834996aeb28d4ebe9695fe3757255d39 | 1757141790248 | 9ac7fc11589e4b32b5eff0b9019f1ef5 | NULL | NULL |
+----------------------------------+--------------------+----------------------------------+---------------+----------------------------------+------------------+---------------------+
=== cw_is_label ===
+----------------------------------+--------------------------------------+----------------+----------------------------------+--------+----------+----------------------------------+---------------+----------------------------------+------------------+
| ID | NAME | CODE | BUSINESS_ID | IS_DEL | ADD_TYPE | CREATE_USER_ID | CREATE_TIME | LAST_UPDATE_USER_ID | LAST_UPDATE_TIME |
+----------------------------------+--------------------------------------+----------------+----------------------------------+--------+----------+----------------------------------+---------------+----------------------------------+------------------+
| ffe50ecad80d4d53bb71f51f64399213 | 星中心物业人力资源_20251217 | 20251217627982 | 2524639890ba4f2cba9ba1a4eeaa4015 | 1 | 0 | e6fadb2224c948a69f51e85f3395e861 | 1765943025351 | e6fadb2224c948a69f51e85f3395e861 | 1766459862306 |
| fe77c039dcbe40178192af1f6e1c3ab9 | 低区通用权限 | 20240112301168 | 2524639890ba4f2cba9ba1a4eeaa4015 | 0 | 0 | 4712af264f1f4ce28cb4e6b6e2d0834b | 1705039784273 | 4712af264f1f4ce28cb4e6b6e2d0834b | 1705039784273 |
| fe1c3b305c1a41448289faaed06bc3d0 | VIP电梯厅-高区 | 20240121715379 | 2524639890ba4f2cba9ba1a4eeaa4015 | 0 | 0 | 4712af264f1f4ce28cb4e6b6e2d0834b | 1705824562257 | 4712af264f1f4ce28cb4e6b6e2d0834b | 1705824562257 |
+----------------------------------+--------------------------------------+----------------+----------------------------------+--------+----------+----------------------------------+---------------+----------------------------------+------------------+
=== org_floor ===
+----------------------------------+---------+--------+-----------+
| org_id | zone_id | is_all | zone_name |
+----------------------------------+---------+--------+-----------+
| f216235e54ca42bfa0379e69b3754aff | 1 | 0 | 1 |
| 8fc3f910bd834198a539832017fe920e | 1 | 0 | 1 |
| 3f591e6b4cb640b7b77978d27f47bd4b | 1 | 0 | 1 |
+----------------------------------+---------+--------+-----------+
=== cw_is_organization_area_ref ===
@@ -0,0 +1,39 @@
mysql: [Warning] Using a password on the command line interface can be insecure.
cw_is_device_image_store 8493 InnoDB
cw_is_device_person 6091835 InnoDB
cw_is_device_person_sync_log 1195561 InnoDB
cw_is_group_person_ref 194105 InnoDB
cw_is_image_store_associated_ref 18148 InnoDB 图库和机构,标签,个人的关联关系表
cw_is_label 353 InnoDB
cw_is_organization 642 InnoDB
cw_is_organization_area_ref 0 InnoDB 机构派梯楼层关联表
cw_is_organization_extend 0 InnoDB
cw_is_organization_extend_detail 0 InnoDB
cw_is_organization_image_store 0 InnoDB
cw_is_organization_type 9 InnoDB 图库机构类型表
cw_is_organization_type_properties 71 InnoDB 图库机构类型属性表
cw_is_person 43278 InnoDB 人员信息表
cw_is_person_audit 0 InnoDB
cw_is_person_batch_detail 1231 InnoDB 人员导入明细表
cw_is_person_batch_import 38 InnoDB 人员导入任务表
cw_is_person_label_ref 5676 InnoDB 人员标签关联表
cw_is_person_organization_ref 10098 InnoDB 人员组织关联表
cw_is_person_properties 30 InnoDB 人员属性表
cw_is_person_properties_switch 0 InnoDB 人员属性注册照优化参数表
cw_is_person_registry 0 InnoDB
cw_is_person_registry_device 0 InnoDB
cw_is_person_registry_properties 0 InnoDB
cw_operation_log 1257 InnoDB 操作日志
cw_task_job_everytime_details 12000 InnoDB
org_floor 12 InnoDB 机构楼层对应表
qrtz_blob_triggers 0 InnoDB
qrtz_calendars 0 InnoDB
qrtz_cron_triggers 8 InnoDB
qrtz_fired_triggers 2 InnoDB
qrtz_job_details 9 InnoDB
qrtz_locks 2 InnoDB
qrtz_paused_trigger_grps 0 InnoDB
qrtz_scheduler_state 3 InnoDB
qrtz_simple_triggers 86 InnoDB
qrtz_simprop_triggers 0 InnoDB
qrtz_triggers 94 InnoDB
1 mysql: [Warning] Using a password on the command line interface can be insecure.
2 cw_is_device_image_store 8493 InnoDB
3 cw_is_device_person 6091835 InnoDB
4 cw_is_device_person_sync_log 1195561 InnoDB
5 cw_is_group_person_ref 194105 InnoDB
6 cw_is_image_store_associated_ref 18148 InnoDB 图库和机构,标签,个人的关联关系表
7 cw_is_label 353 InnoDB
8 cw_is_organization 642 InnoDB
9 cw_is_organization_area_ref 0 InnoDB 机构派梯楼层关联表
10 cw_is_organization_extend 0 InnoDB
11 cw_is_organization_extend_detail 0 InnoDB
12 cw_is_organization_image_store 0 InnoDB
13 cw_is_organization_type 9 InnoDB 图库机构类型表
14 cw_is_organization_type_properties 71 InnoDB 图库机构类型属性表
15 cw_is_person 43278 InnoDB 人员信息表
16 cw_is_person_audit 0 InnoDB
17 cw_is_person_batch_detail 1231 InnoDB 人员导入明细表
18 cw_is_person_batch_import 38 InnoDB 人员导入任务表
19 cw_is_person_label_ref 5676 InnoDB 人员标签关联表
20 cw_is_person_organization_ref 10098 InnoDB 人员组织关联表
21 cw_is_person_properties 30 InnoDB 人员属性表
22 cw_is_person_properties_switch 0 InnoDB 人员属性注册照优化参数表
23 cw_is_person_registry 0 InnoDB
24 cw_is_person_registry_device 0 InnoDB
25 cw_is_person_registry_properties 0 InnoDB
26 cw_operation_log 1257 InnoDB 操作日志
27 cw_task_job_everytime_details 12000 InnoDB
28 org_floor 12 InnoDB 机构楼层对应表
29 qrtz_blob_triggers 0 InnoDB
30 qrtz_calendars 0 InnoDB
31 qrtz_cron_triggers 8 InnoDB
32 qrtz_fired_triggers 2 InnoDB
33 qrtz_job_details 9 InnoDB
34 qrtz_locks 2 InnoDB
35 qrtz_paused_trigger_grps 0 InnoDB
36 qrtz_scheduler_state 3 InnoDB
37 qrtz_simple_triggers 86 InnoDB
38 qrtz_simprop_triggers 0 InnoDB
39 qrtz_triggers 94 InnoDB
@@ -0,0 +1,919 @@
mysql: [Warning] Using a password on the command line interface can be insecure.
code_elevator_area zone_id varchar NO NULL 电梯编码
code_elevator_area code varchar NO NULL 地区编码
code_elevator_area create_time bigint YES NULL
code_elevator_area last_update_time bigint YES NULL
code_elevator_area is_first tinyint YES NULL 是否首层:0-不是,1-是
code_elevator_area parent_id varchar YES NULL 父级id
device_image_store building_id varchar NO NULL 楼栋id
device_image_store image_store_id varchar NO NULL 图库id
elevator_device ID bigint NO NULL PRI auto_increment 主键id
elevator_device create_time bigint NO NULL 创建时间
elevator_device last_update_time bigint NO NULL 最近修改时间
elevator_device delete_flag tinyint NO 0 是否删除(0,删除;1,未删除)
elevator_device device_id varchar YES NULL 设备id
elevator_device device_name varchar NO NULL 设备名称
elevator_device device_code varchar YES NULL 设备编码
elevator_device device_type_name varchar NO NULL 设备类型名称
elevator_device status tinyint YES NULL 设备状态(1:禁用,2:在线,3:离线)
elevator_device area_name varchar YES NULL 空间位置
elevator_device current_building_id varchar YES NULL 楼栋id
elevator_device current_building varchar YES NULL 当前楼栋
elevator_device current_floor_id varchar YES NULL 楼层id
elevator_device current_floor varchar YES NULL 当前楼层
elevator_device elevator_floor_list varchar YES NULL 派梯楼层(,隔开)
elevator_device elevator_floor_id_list varchar YES NULL 派梯楼层ID(,隔开)
elevator_device business_id varchar NO NULL 租户id
elevator_device area_id varchar YES NULL 地区编码
image_rule_ref id varchar NO NULL PRI 唯一标识
image_rule_ref zone_id varchar NO NULL 楼层id
image_rule_ref zone_name varchar YES NULL 楼层名
image_rule_ref name varchar YES NULL 规则名
image_rule_ref person_id varchar YES NULL 人员id
image_rule_ref include_labels varchar YES NULL MUL 人员包含的标签
image_rule_ref include_organizations varchar YES NULL MUL 人员所在的机构
image_rule_ref exclude_labels varchar YES NULL 排除的人员标签
image_rule_ref is_default tinyint YES 0 是否默认规则:0-不是,1-是
image_rule_ref start_time bigint YES NULL 开始时间
image_rule_ref end_time bigint YES NULL 结束时间
image_rule_ref create_time bigint YES NULL 创建时间
image_rule_ref last_update_time bigint YES NULL 最近修改时间
image_rule_ref business_id varchar YES NULL 企业id
image_rule_ref parent_rule varchar YES NULL 归属规则id
image_rule_ref person_delete tinyint YES 0 人员是否删除了:0-未删除,1-已删除
it_acs_device_task id varchar NO NULL PRI 任务id
it_acs_device_task ALL_DEVICES int NO NULL 需要处理设备总数
it_acs_device_task BIND_DEVICES int NO NULL 已处理设备数
it_acs_device_task IS_STOP int NO NULL 是否终止:0-执行,1-终止
it_acs_elevator_record ID varchar NO NULL PRI 主键
it_acs_elevator_record BUSINESS_ID varchar NO NULL MUL 企业ID
it_acs_elevator_record DEVICE_ID varchar YES NULL 设备id
it_acs_elevator_record DEVICE_CODE varchar NO NULL 设备编号
it_acs_elevator_record DEVICE_NAME varchar YES NULL 设备名称
it_acs_elevator_record DEVICE_TYPE_ID varchar YES NULL 设备类型ID
it_acs_elevator_record DEVICE_TYPE_NAME varchar YES NULL 设备类型名称
it_acs_elevator_record DISTRICT_ID varchar YES NULL 省市区id
it_acs_elevator_record AREA_ID varchar YES NULL 设备区位id
it_acs_elevator_record OPEN_DOOR_TYPE varchar NO NULL 开门方式
it_acs_elevator_record OPERATE_NAME varchar YES NULL 操作人员名称
it_acs_elevator_record FACE_IMAGE_PATH varchar YES NULL 抓拍照
it_acs_elevator_record PANORAMA_IMAGE_PATH varchar YES NULL 全景照
it_acs_elevator_record RECORD_RESULT tinyint YES 1 开门结果 1:成功 2:失败
it_acs_elevator_record RECOGNITION_NO varchar YES NULL 识别编号
it_acs_elevator_record RECOGNITION_TIME bigint NO NULL 识别时间
it_acs_elevator_record LOG_ID varchar YES NULL 请求唯一标志码
it_acs_elevator_record RECOGNITION_FACE_ID varchar YES NULL MUL 识别记录唯一标志码
it_acs_elevator_record CREATE_TIME bigint YES NULL 创建时间
it_acs_elevator_record CREATE_USER_ID varchar YES NULL 创建人
it_acs_elevator_record LAST_UPDATE_TIME bigint YES NULL 修改时间
it_acs_elevator_record LAST_UPDATE_USER_ID varchar YES NULL 修改人
it_acs_elevator_record SRC_FLOOR varchar YES NULL 进梯(当前)楼层
it_acs_elevator_record DEST_FLOOR varchar YES NULL 选层楼层
it_acs_elevator_record DISPATCH_ELEVATOR_NO varchar YES NULL 派梯梯号
it_acs_elevator_record DISPATCH_ELEVATOR_TIME bigint YES NULL 派梯时间
it_acs_elevator_record IS_VISITOR varchar YES NULL 是否访客:0-不是,1-是
it_acs_elevator_record INTERVIEWEE varchar YES NULL 被访人id
it_acs_elevator_record ORG_ID varchar YES NULL 机构id
it_acs_elevator_record ORG_NAME varchar YES NULL 机构名
it_acs_elevator_record PERSON_CODE varchar YES NULL 工号
it_acs_elevator_record_2020 ID varchar NO NULL PRI 主键
it_acs_elevator_record_2020 BUSINESS_ID varchar NO NULL MUL 企业ID
it_acs_elevator_record_2020 DEVICE_ID varchar YES NULL 设备id
it_acs_elevator_record_2020 DEVICE_CODE varchar NO NULL 设备编号
it_acs_elevator_record_2020 DEVICE_NAME varchar YES NULL 设备名称
it_acs_elevator_record_2020 DEVICE_TYPE_ID varchar YES NULL 设备类型ID
it_acs_elevator_record_2020 DEVICE_TYPE_NAME varchar YES NULL 设备类型名称
it_acs_elevator_record_2020 DISTRICT_ID varchar YES NULL 省市区id
it_acs_elevator_record_2020 AREA_ID varchar YES NULL 设备区位id
it_acs_elevator_record_2020 OPEN_DOOR_TYPE varchar NO NULL 开门方式
it_acs_elevator_record_2020 OPERATE_NAME varchar YES NULL 操作人员名称
it_acs_elevator_record_2020 FACE_IMAGE_PATH varchar YES NULL 抓拍照
it_acs_elevator_record_2020 PANORAMA_IMAGE_PATH varchar YES NULL 全景照
it_acs_elevator_record_2020 RECORD_RESULT tinyint YES 1 开门结果 1:成功 2:失败
it_acs_elevator_record_2020 RECOGNITION_NO varchar YES NULL 识别编号
it_acs_elevator_record_2020 RECOGNITION_TIME bigint NO NULL 识别时间
it_acs_elevator_record_2020 LOG_ID varchar YES NULL 请求唯一标志码
it_acs_elevator_record_2020 RECOGNITION_FACE_ID varchar YES NULL MUL 识别记录唯一标志码
it_acs_elevator_record_2020 CREATE_TIME bigint YES NULL 创建时间
it_acs_elevator_record_2020 CREATE_USER_ID varchar YES NULL 创建人
it_acs_elevator_record_2020 LAST_UPDATE_TIME bigint YES NULL 修改时间
it_acs_elevator_record_2020 LAST_UPDATE_USER_ID varchar YES NULL 修改人
it_acs_elevator_record_2020 SRC_FLOOR varchar YES NULL 进梯(当前)楼层
it_acs_elevator_record_2020 DEST_FLOOR varchar YES NULL 选层楼层
it_acs_elevator_record_2020 DISPATCH_ELEVATOR_NO varchar YES NULL 派梯梯号
it_acs_elevator_record_2020 DISPATCH_ELEVATOR_TIME bigint YES NULL 派梯时间
it_acs_elevator_record_2020 IS_VISITOR varchar YES NULL 是否访客:0-不是,1-是
it_acs_elevator_record_2020 INTERVIEWEE varchar YES NULL 被访人id
it_acs_elevator_record_2020 ORG_ID varchar YES NULL 机构id
it_acs_elevator_record_2020 ORG_NAME varchar YES NULL 机构名
it_acs_elevator_record_2020 PERSON_CODE varchar YES NULL 工号
it_acs_elevator_record_2021 ID varchar NO NULL PRI 主键
it_acs_elevator_record_2021 BUSINESS_ID varchar NO NULL MUL 企业ID
it_acs_elevator_record_2021 DEVICE_ID varchar YES NULL 设备id
it_acs_elevator_record_2021 DEVICE_CODE varchar NO NULL 设备编号
it_acs_elevator_record_2021 DEVICE_NAME varchar YES NULL 设备名称
it_acs_elevator_record_2021 DEVICE_TYPE_ID varchar YES NULL 设备类型ID
it_acs_elevator_record_2021 DEVICE_TYPE_NAME varchar YES NULL 设备类型名称
it_acs_elevator_record_2021 DISTRICT_ID varchar YES NULL 省市区id
it_acs_elevator_record_2021 AREA_ID varchar YES NULL 设备区位id
it_acs_elevator_record_2021 OPEN_DOOR_TYPE varchar NO NULL 开门方式
it_acs_elevator_record_2021 OPERATE_NAME varchar YES NULL 操作人员名称
it_acs_elevator_record_2021 FACE_IMAGE_PATH varchar YES NULL 抓拍照
it_acs_elevator_record_2021 PANORAMA_IMAGE_PATH varchar YES NULL 全景照
it_acs_elevator_record_2021 RECORD_RESULT tinyint YES 1 开门结果 1:成功 2:失败
it_acs_elevator_record_2021 RECOGNITION_NO varchar YES NULL 识别编号
it_acs_elevator_record_2021 RECOGNITION_TIME bigint NO NULL 识别时间
it_acs_elevator_record_2021 LOG_ID varchar YES NULL 请求唯一标志码
it_acs_elevator_record_2021 RECOGNITION_FACE_ID varchar YES NULL MUL 识别记录唯一标志码
it_acs_elevator_record_2021 CREATE_TIME bigint YES NULL 创建时间
it_acs_elevator_record_2021 CREATE_USER_ID varchar YES NULL 创建人
it_acs_elevator_record_2021 LAST_UPDATE_TIME bigint YES NULL 修改时间
it_acs_elevator_record_2021 LAST_UPDATE_USER_ID varchar YES NULL 修改人
it_acs_elevator_record_2021 SRC_FLOOR varchar YES NULL 进梯(当前)楼层
it_acs_elevator_record_2021 DEST_FLOOR varchar YES NULL 选层楼层
it_acs_elevator_record_2021 DISPATCH_ELEVATOR_NO varchar YES NULL 派梯梯号
it_acs_elevator_record_2021 DISPATCH_ELEVATOR_TIME bigint YES NULL 派梯时间
it_acs_elevator_record_2021 IS_VISITOR varchar YES NULL 是否访客:0-不是,1-是
it_acs_elevator_record_2021 INTERVIEWEE varchar YES NULL 被访人id
it_acs_elevator_record_2021 ORG_ID varchar YES NULL 机构id
it_acs_elevator_record_2021 ORG_NAME varchar YES NULL 机构名
it_acs_elevator_record_2021 PERSON_CODE varchar YES NULL 工号
it_acs_elevator_record_2022 ID varchar NO NULL PRI 主键
it_acs_elevator_record_2022 BUSINESS_ID varchar NO NULL MUL 企业ID
it_acs_elevator_record_2022 DEVICE_ID varchar YES NULL 设备id
it_acs_elevator_record_2022 DEVICE_CODE varchar NO NULL 设备编号
it_acs_elevator_record_2022 DEVICE_NAME varchar YES NULL 设备名称
it_acs_elevator_record_2022 DEVICE_TYPE_ID varchar YES NULL 设备类型ID
it_acs_elevator_record_2022 DEVICE_TYPE_NAME varchar YES NULL 设备类型名称
it_acs_elevator_record_2022 DISTRICT_ID varchar YES NULL 省市区id
it_acs_elevator_record_2022 AREA_ID varchar YES NULL 设备区位id
it_acs_elevator_record_2022 OPEN_DOOR_TYPE varchar NO NULL 开门方式
it_acs_elevator_record_2022 OPERATE_NAME varchar YES NULL 操作人员名称
it_acs_elevator_record_2022 FACE_IMAGE_PATH varchar YES NULL 抓拍照
it_acs_elevator_record_2022 PANORAMA_IMAGE_PATH varchar YES NULL 全景照
it_acs_elevator_record_2022 RECORD_RESULT tinyint YES 1 开门结果 1:成功 2:失败
it_acs_elevator_record_2022 RECOGNITION_NO varchar YES NULL 识别编号
it_acs_elevator_record_2022 RECOGNITION_TIME bigint NO NULL 识别时间
it_acs_elevator_record_2022 LOG_ID varchar YES NULL 请求唯一标志码
it_acs_elevator_record_2022 RECOGNITION_FACE_ID varchar YES NULL MUL 识别记录唯一标志码
it_acs_elevator_record_2022 CREATE_TIME bigint YES NULL 创建时间
it_acs_elevator_record_2022 CREATE_USER_ID varchar YES NULL 创建人
it_acs_elevator_record_2022 LAST_UPDATE_TIME bigint YES NULL 修改时间
it_acs_elevator_record_2022 LAST_UPDATE_USER_ID varchar YES NULL 修改人
it_acs_elevator_record_2022 SRC_FLOOR varchar YES NULL 进梯(当前)楼层
it_acs_elevator_record_2022 DEST_FLOOR varchar YES NULL 选层楼层
it_acs_elevator_record_2022 DISPATCH_ELEVATOR_NO varchar YES NULL 派梯梯号
it_acs_elevator_record_2022 DISPATCH_ELEVATOR_TIME bigint YES NULL 派梯时间
it_acs_elevator_record_2022 IS_VISITOR varchar YES NULL 是否访客:0-不是,1-是
it_acs_elevator_record_2022 INTERVIEWEE varchar YES NULL 被访人id
it_acs_elevator_record_2022 ORG_ID varchar YES NULL 机构id
it_acs_elevator_record_2022 ORG_NAME varchar YES NULL 机构名
it_acs_elevator_record_2022 PERSON_CODE varchar YES NULL 工号
it_acs_elevator_record_2023 ID varchar NO NULL PRI 主键
it_acs_elevator_record_2023 BUSINESS_ID varchar NO NULL 企业ID
it_acs_elevator_record_2023 DEVICE_ID varchar YES NULL 设备id
it_acs_elevator_record_2023 DEVICE_CODE varchar NO NULL 设备编号
it_acs_elevator_record_2023 DEVICE_NAME varchar YES NULL 设备名称
it_acs_elevator_record_2023 DEVICE_TYPE_ID varchar YES NULL 设备类型ID
it_acs_elevator_record_2023 DEVICE_TYPE_NAME varchar YES NULL 设备类型名称
it_acs_elevator_record_2023 DISTRICT_ID varchar YES NULL 省市区id
it_acs_elevator_record_2023 AREA_ID varchar YES NULL 设备区位id
it_acs_elevator_record_2023 OPEN_DOOR_TYPE varchar NO NULL 开门方式
it_acs_elevator_record_2023 OPERATE_NAME varchar YES NULL 操作人员名称
it_acs_elevator_record_2023 FACE_IMAGE_PATH varchar YES NULL 抓拍照
it_acs_elevator_record_2023 PANORAMA_IMAGE_PATH varchar YES NULL 全景照
it_acs_elevator_record_2023 RECORD_RESULT tinyint YES 1 开门结果 1:成功 2:失败
it_acs_elevator_record_2023 RECOGNITION_NO varchar YES NULL 识别编号
it_acs_elevator_record_2023 RECOGNITION_TIME bigint NO NULL MUL 识别时间
it_acs_elevator_record_2023 LOG_ID varchar YES NULL 请求唯一标志码
it_acs_elevator_record_2023 RECOGNITION_FACE_ID varchar YES NULL MUL 识别记录唯一标志码
it_acs_elevator_record_2023 CREATE_TIME bigint YES NULL 创建时间
it_acs_elevator_record_2023 CREATE_USER_ID varchar YES NULL 创建人
it_acs_elevator_record_2023 LAST_UPDATE_TIME bigint YES NULL 修改时间
it_acs_elevator_record_2023 LAST_UPDATE_USER_ID varchar YES NULL 修改人
it_acs_elevator_record_2023 SRC_FLOOR varchar YES NULL 进梯(当前)楼层
it_acs_elevator_record_2023 DEST_FLOOR varchar YES NULL 选层楼层
it_acs_elevator_record_2023 DISPATCH_ELEVATOR_NO varchar YES NULL 派梯梯号
it_acs_elevator_record_2023 DISPATCH_ELEVATOR_TIME bigint YES NULL 派梯时间
it_acs_elevator_record_2023 IS_VISITOR varchar YES NULL 是否访客:0-不是,1-是
it_acs_elevator_record_2023 INTERVIEWEE varchar YES NULL 被访人id
it_acs_elevator_record_2023 ORG_ID varchar YES NULL 机构id
it_acs_elevator_record_2023 ORG_NAME varchar YES NULL 机构名
it_acs_elevator_record_2023 PERSON_CODE varchar YES NULL 工号
it_acs_elevator_record_2024 ID varchar NO NULL PRI 主键
it_acs_elevator_record_2024 BUSINESS_ID varchar NO NULL MUL 企业ID
it_acs_elevator_record_2024 DEVICE_ID varchar YES NULL 设备id
it_acs_elevator_record_2024 DEVICE_CODE varchar NO NULL 设备编号
it_acs_elevator_record_2024 DEVICE_NAME varchar YES NULL 设备名称
it_acs_elevator_record_2024 DEVICE_TYPE_ID varchar YES NULL 设备类型ID
it_acs_elevator_record_2024 DEVICE_TYPE_NAME varchar YES NULL 设备类型名称
it_acs_elevator_record_2024 DISTRICT_ID varchar YES NULL 省市区id
it_acs_elevator_record_2024 AREA_ID varchar YES NULL 设备区位id
it_acs_elevator_record_2024 OPEN_DOOR_TYPE varchar NO NULL 开门方式
it_acs_elevator_record_2024 OPERATE_NAME varchar YES NULL 操作人员名称
it_acs_elevator_record_2024 FACE_IMAGE_PATH varchar YES NULL 抓拍照
it_acs_elevator_record_2024 PANORAMA_IMAGE_PATH varchar YES NULL 全景照
it_acs_elevator_record_2024 RECORD_RESULT tinyint YES 1 开门结果 1:成功 2:失败
it_acs_elevator_record_2024 RECOGNITION_NO varchar YES NULL 识别编号
it_acs_elevator_record_2024 RECOGNITION_TIME bigint NO NULL 识别时间
it_acs_elevator_record_2024 LOG_ID varchar YES NULL 请求唯一标志码
it_acs_elevator_record_2024 RECOGNITION_FACE_ID varchar YES NULL MUL 识别记录唯一标志码
it_acs_elevator_record_2024 CREATE_TIME bigint YES NULL 创建时间
it_acs_elevator_record_2024 CREATE_USER_ID varchar YES NULL 创建人
it_acs_elevator_record_2024 LAST_UPDATE_TIME bigint YES NULL 修改时间
it_acs_elevator_record_2024 LAST_UPDATE_USER_ID varchar YES NULL 修改人
it_acs_elevator_record_2024 SRC_FLOOR varchar YES NULL 进梯(当前)楼层
it_acs_elevator_record_2024 DEST_FLOOR varchar YES NULL 选层楼层
it_acs_elevator_record_2024 DISPATCH_ELEVATOR_NO varchar YES NULL 派梯梯号
it_acs_elevator_record_2024 DISPATCH_ELEVATOR_TIME bigint YES NULL 派梯时间
it_acs_elevator_record_2024 IS_VISITOR varchar YES NULL 是否访客:0-不是,1-是
it_acs_elevator_record_2024 INTERVIEWEE varchar YES NULL 被访人id
it_acs_elevator_record_2024 ORG_ID varchar YES NULL 机构id
it_acs_elevator_record_2024 ORG_NAME varchar YES NULL 机构名
it_acs_elevator_record_2024 PERSON_CODE varchar YES NULL 工号
it_acs_elevator_record_2025 ID varchar NO NULL PRI 主键
it_acs_elevator_record_2025 BUSINESS_ID varchar NO NULL MUL 企业ID
it_acs_elevator_record_2025 DEVICE_ID varchar YES NULL 设备id
it_acs_elevator_record_2025 DEVICE_CODE varchar NO NULL 设备编号
it_acs_elevator_record_2025 DEVICE_NAME varchar YES NULL 设备名称
it_acs_elevator_record_2025 DEVICE_TYPE_ID varchar YES NULL 设备类型ID
it_acs_elevator_record_2025 DEVICE_TYPE_NAME varchar YES NULL 设备类型名称
it_acs_elevator_record_2025 DISTRICT_ID varchar YES NULL 省市区id
it_acs_elevator_record_2025 AREA_ID varchar YES NULL 设备区位id
it_acs_elevator_record_2025 OPEN_DOOR_TYPE varchar NO NULL 开门方式
it_acs_elevator_record_2025 OPERATE_NAME varchar YES NULL 操作人员名称
it_acs_elevator_record_2025 FACE_IMAGE_PATH varchar YES NULL 抓拍照
it_acs_elevator_record_2025 PANORAMA_IMAGE_PATH varchar YES NULL 全景照
it_acs_elevator_record_2025 RECORD_RESULT tinyint YES 1 开门结果 1:成功 2:失败
it_acs_elevator_record_2025 RECOGNITION_NO varchar YES NULL 识别编号
it_acs_elevator_record_2025 RECOGNITION_TIME bigint NO NULL 识别时间
it_acs_elevator_record_2025 LOG_ID varchar YES NULL 请求唯一标志码
it_acs_elevator_record_2025 RECOGNITION_FACE_ID varchar YES NULL MUL 识别记录唯一标志码
it_acs_elevator_record_2025 CREATE_TIME bigint YES NULL 创建时间
it_acs_elevator_record_2025 CREATE_USER_ID varchar YES NULL 创建人
it_acs_elevator_record_2025 LAST_UPDATE_TIME bigint YES NULL 修改时间
it_acs_elevator_record_2025 LAST_UPDATE_USER_ID varchar YES NULL 修改人
it_acs_elevator_record_2025 SRC_FLOOR varchar YES NULL 进梯(当前)楼层
it_acs_elevator_record_2025 DEST_FLOOR varchar YES NULL 选层楼层
it_acs_elevator_record_2025 DISPATCH_ELEVATOR_NO varchar YES NULL 派梯梯号
it_acs_elevator_record_2025 DISPATCH_ELEVATOR_TIME bigint YES NULL 派梯时间
it_acs_elevator_record_2025 IS_VISITOR varchar YES NULL 是否访客:0-不是,1-是
it_acs_elevator_record_2025 INTERVIEWEE varchar YES NULL 被访人id
it_acs_elevator_record_2025 ORG_ID varchar YES NULL 机构id
it_acs_elevator_record_2025 ORG_NAME varchar YES NULL 机构名
it_acs_elevator_record_2025 PERSON_CODE varchar YES NULL 工号
it_acs_elevator_record_2026 ID varchar NO NULL PRI 主键
it_acs_elevator_record_2026 BUSINESS_ID varchar NO NULL MUL 企业ID
it_acs_elevator_record_2026 DEVICE_ID varchar YES NULL 设备id
it_acs_elevator_record_2026 DEVICE_CODE varchar NO NULL 设备编号
it_acs_elevator_record_2026 DEVICE_NAME varchar YES NULL 设备名称
it_acs_elevator_record_2026 DEVICE_TYPE_ID varchar YES NULL 设备类型ID
it_acs_elevator_record_2026 DEVICE_TYPE_NAME varchar YES NULL 设备类型名称
it_acs_elevator_record_2026 DISTRICT_ID varchar YES NULL 省市区id
it_acs_elevator_record_2026 AREA_ID varchar YES NULL 设备区位id
it_acs_elevator_record_2026 OPEN_DOOR_TYPE varchar NO NULL 开门方式
it_acs_elevator_record_2026 OPERATE_NAME varchar YES NULL 操作人员名称
it_acs_elevator_record_2026 FACE_IMAGE_PATH varchar YES NULL 抓拍照
it_acs_elevator_record_2026 PANORAMA_IMAGE_PATH varchar YES NULL 全景照
it_acs_elevator_record_2026 RECORD_RESULT tinyint YES 1 开门结果 1:成功 2:失败
it_acs_elevator_record_2026 RECOGNITION_NO varchar YES NULL 识别编号
it_acs_elevator_record_2026 RECOGNITION_TIME bigint NO NULL 识别时间
it_acs_elevator_record_2026 LOG_ID varchar YES NULL 请求唯一标志码
it_acs_elevator_record_2026 RECOGNITION_FACE_ID varchar YES NULL MUL 识别记录唯一标志码
it_acs_elevator_record_2026 CREATE_TIME bigint YES NULL 创建时间
it_acs_elevator_record_2026 CREATE_USER_ID varchar YES NULL 创建人
it_acs_elevator_record_2026 LAST_UPDATE_TIME bigint YES NULL 修改时间
it_acs_elevator_record_2026 LAST_UPDATE_USER_ID varchar YES NULL 修改人
it_acs_elevator_record_2026 SRC_FLOOR varchar YES NULL 进梯(当前)楼层
it_acs_elevator_record_2026 DEST_FLOOR varchar YES NULL 选层楼层
it_acs_elevator_record_2026 DISPATCH_ELEVATOR_NO varchar YES NULL 派梯梯号
it_acs_elevator_record_2026 DISPATCH_ELEVATOR_TIME bigint YES NULL 派梯时间
it_acs_elevator_record_2026 IS_VISITOR varchar YES NULL 是否访客:0-不是,1-是
it_acs_elevator_record_2026 INTERVIEWEE varchar YES NULL 被访人id
it_acs_elevator_record_2026 ORG_ID varchar YES NULL 机构id
it_acs_elevator_record_2026 ORG_NAME varchar YES NULL 机构名
it_acs_elevator_record_2026 PERSON_CODE varchar YES NULL 工号
it_acs_elevator_record_2027 ID varchar NO NULL PRI 主键
it_acs_elevator_record_2027 BUSINESS_ID varchar NO NULL MUL 企业ID
it_acs_elevator_record_2027 DEVICE_ID varchar YES NULL 设备id
it_acs_elevator_record_2027 DEVICE_CODE varchar NO NULL 设备编号
it_acs_elevator_record_2027 DEVICE_NAME varchar YES NULL 设备名称
it_acs_elevator_record_2027 DEVICE_TYPE_ID varchar YES NULL 设备类型ID
it_acs_elevator_record_2027 DEVICE_TYPE_NAME varchar YES NULL 设备类型名称
it_acs_elevator_record_2027 DISTRICT_ID varchar YES NULL 省市区id
it_acs_elevator_record_2027 AREA_ID varchar YES NULL 设备区位id
it_acs_elevator_record_2027 OPEN_DOOR_TYPE varchar NO NULL 开门方式
it_acs_elevator_record_2027 OPERATE_NAME varchar YES NULL 操作人员名称
it_acs_elevator_record_2027 FACE_IMAGE_PATH varchar YES NULL 抓拍照
it_acs_elevator_record_2027 PANORAMA_IMAGE_PATH varchar YES NULL 全景照
it_acs_elevator_record_2027 RECORD_RESULT tinyint YES 1 开门结果 1:成功 2:失败
it_acs_elevator_record_2027 RECOGNITION_NO varchar YES NULL 识别编号
it_acs_elevator_record_2027 RECOGNITION_TIME bigint NO NULL 识别时间
it_acs_elevator_record_2027 LOG_ID varchar YES NULL 请求唯一标志码
it_acs_elevator_record_2027 RECOGNITION_FACE_ID varchar YES NULL MUL 识别记录唯一标志码
it_acs_elevator_record_2027 CREATE_TIME bigint YES NULL 创建时间
it_acs_elevator_record_2027 CREATE_USER_ID varchar YES NULL 创建人
it_acs_elevator_record_2027 LAST_UPDATE_TIME bigint YES NULL 修改时间
it_acs_elevator_record_2027 LAST_UPDATE_USER_ID varchar YES NULL 修改人
it_acs_elevator_record_2027 SRC_FLOOR varchar YES NULL 进梯(当前)楼层
it_acs_elevator_record_2027 DEST_FLOOR varchar YES NULL 选层楼层
it_acs_elevator_record_2027 DISPATCH_ELEVATOR_NO varchar YES NULL 派梯梯号
it_acs_elevator_record_2027 DISPATCH_ELEVATOR_TIME bigint YES NULL 派梯时间
it_acs_elevator_record_2027 IS_VISITOR varchar YES NULL 是否访客:0-不是,1-是
it_acs_elevator_record_2027 INTERVIEWEE varchar YES NULL 被访人id
it_acs_elevator_record_2027 ORG_ID varchar YES NULL 机构id
it_acs_elevator_record_2027 ORG_NAME varchar YES NULL 机构名
it_acs_elevator_record_2027 PERSON_CODE varchar YES NULL 工号
it_acs_elevator_record_2028 ID varchar NO NULL PRI 主键
it_acs_elevator_record_2028 BUSINESS_ID varchar NO NULL MUL 企业ID
it_acs_elevator_record_2028 DEVICE_ID varchar YES NULL 设备id
it_acs_elevator_record_2028 DEVICE_CODE varchar NO NULL 设备编号
it_acs_elevator_record_2028 DEVICE_NAME varchar YES NULL 设备名称
it_acs_elevator_record_2028 DEVICE_TYPE_ID varchar YES NULL 设备类型ID
it_acs_elevator_record_2028 DEVICE_TYPE_NAME varchar YES NULL 设备类型名称
it_acs_elevator_record_2028 DISTRICT_ID varchar YES NULL 省市区id
it_acs_elevator_record_2028 AREA_ID varchar YES NULL 设备区位id
it_acs_elevator_record_2028 OPEN_DOOR_TYPE varchar NO NULL 开门方式
it_acs_elevator_record_2028 OPERATE_NAME varchar YES NULL 操作人员名称
it_acs_elevator_record_2028 FACE_IMAGE_PATH varchar YES NULL 抓拍照
it_acs_elevator_record_2028 PANORAMA_IMAGE_PATH varchar YES NULL 全景照
it_acs_elevator_record_2028 RECORD_RESULT tinyint YES 1 开门结果 1:成功 2:失败
it_acs_elevator_record_2028 RECOGNITION_NO varchar YES NULL 识别编号
it_acs_elevator_record_2028 RECOGNITION_TIME bigint NO NULL 识别时间
it_acs_elevator_record_2028 LOG_ID varchar YES NULL 请求唯一标志码
it_acs_elevator_record_2028 RECOGNITION_FACE_ID varchar YES NULL MUL 识别记录唯一标志码
it_acs_elevator_record_2028 CREATE_TIME bigint YES NULL 创建时间
it_acs_elevator_record_2028 CREATE_USER_ID varchar YES NULL 创建人
it_acs_elevator_record_2028 LAST_UPDATE_TIME bigint YES NULL 修改时间
it_acs_elevator_record_2028 LAST_UPDATE_USER_ID varchar YES NULL 修改人
it_acs_elevator_record_2028 SRC_FLOOR varchar YES NULL 进梯(当前)楼层
it_acs_elevator_record_2028 DEST_FLOOR varchar YES NULL 选层楼层
it_acs_elevator_record_2028 DISPATCH_ELEVATOR_NO varchar YES NULL 派梯梯号
it_acs_elevator_record_2028 DISPATCH_ELEVATOR_TIME bigint YES NULL 派梯时间
it_acs_elevator_record_2028 IS_VISITOR varchar YES NULL 是否访客:0-不是,1-是
it_acs_elevator_record_2028 INTERVIEWEE varchar YES NULL 被访人id
it_acs_elevator_record_2028 ORG_ID varchar YES NULL 机构id
it_acs_elevator_record_2028 ORG_NAME varchar YES NULL 机构名
it_acs_elevator_record_2028 PERSON_CODE varchar YES NULL 工号
it_acs_elevator_record_2029 ID varchar NO NULL PRI 主键
it_acs_elevator_record_2029 BUSINESS_ID varchar NO NULL MUL 企业ID
it_acs_elevator_record_2029 DEVICE_ID varchar YES NULL 设备id
it_acs_elevator_record_2029 DEVICE_CODE varchar NO NULL 设备编号
it_acs_elevator_record_2029 DEVICE_NAME varchar YES NULL 设备名称
it_acs_elevator_record_2029 DEVICE_TYPE_ID varchar YES NULL 设备类型ID
it_acs_elevator_record_2029 DEVICE_TYPE_NAME varchar YES NULL 设备类型名称
it_acs_elevator_record_2029 DISTRICT_ID varchar YES NULL 省市区id
it_acs_elevator_record_2029 AREA_ID varchar YES NULL 设备区位id
it_acs_elevator_record_2029 OPEN_DOOR_TYPE varchar NO NULL 开门方式
it_acs_elevator_record_2029 OPERATE_NAME varchar YES NULL 操作人员名称
it_acs_elevator_record_2029 FACE_IMAGE_PATH varchar YES NULL 抓拍照
it_acs_elevator_record_2029 PANORAMA_IMAGE_PATH varchar YES NULL 全景照
it_acs_elevator_record_2029 RECORD_RESULT tinyint YES 1 开门结果 1:成功 2:失败
it_acs_elevator_record_2029 RECOGNITION_NO varchar YES NULL 识别编号
it_acs_elevator_record_2029 RECOGNITION_TIME bigint NO NULL 识别时间
it_acs_elevator_record_2029 LOG_ID varchar YES NULL 请求唯一标志码
it_acs_elevator_record_2029 RECOGNITION_FACE_ID varchar YES NULL MUL 识别记录唯一标志码
it_acs_elevator_record_2029 CREATE_TIME bigint YES NULL 创建时间
it_acs_elevator_record_2029 CREATE_USER_ID varchar YES NULL 创建人
it_acs_elevator_record_2029 LAST_UPDATE_TIME bigint YES NULL 修改时间
it_acs_elevator_record_2029 LAST_UPDATE_USER_ID varchar YES NULL 修改人
it_acs_elevator_record_2029 SRC_FLOOR varchar YES NULL 进梯(当前)楼层
it_acs_elevator_record_2029 DEST_FLOOR varchar YES NULL 选层楼层
it_acs_elevator_record_2029 DISPATCH_ELEVATOR_NO varchar YES NULL 派梯梯号
it_acs_elevator_record_2029 DISPATCH_ELEVATOR_TIME bigint YES NULL 派梯时间
it_acs_elevator_record_2029 IS_VISITOR varchar YES NULL 是否访客:0-不是,1-是
it_acs_elevator_record_2029 INTERVIEWEE varchar YES NULL 被访人id
it_acs_elevator_record_2029 ORG_ID varchar YES NULL 机构id
it_acs_elevator_record_2029 ORG_NAME varchar YES NULL 机构名
it_acs_elevator_record_2029 PERSON_CODE varchar YES NULL 工号
it_acs_elevator_record_2030 ID varchar NO NULL PRI 主键
it_acs_elevator_record_2030 BUSINESS_ID varchar NO NULL MUL 企业ID
it_acs_elevator_record_2030 DEVICE_ID varchar YES NULL 设备id
it_acs_elevator_record_2030 DEVICE_CODE varchar NO NULL 设备编号
it_acs_elevator_record_2030 DEVICE_NAME varchar YES NULL 设备名称
it_acs_elevator_record_2030 DEVICE_TYPE_ID varchar YES NULL 设备类型ID
it_acs_elevator_record_2030 DEVICE_TYPE_NAME varchar YES NULL 设备类型名称
it_acs_elevator_record_2030 DISTRICT_ID varchar YES NULL 省市区id
it_acs_elevator_record_2030 AREA_ID varchar YES NULL 设备区位id
it_acs_elevator_record_2030 OPEN_DOOR_TYPE varchar NO NULL 开门方式
it_acs_elevator_record_2030 OPERATE_NAME varchar YES NULL 操作人员名称
it_acs_elevator_record_2030 FACE_IMAGE_PATH varchar YES NULL 抓拍照
it_acs_elevator_record_2030 PANORAMA_IMAGE_PATH varchar YES NULL 全景照
it_acs_elevator_record_2030 RECORD_RESULT tinyint YES 1 开门结果 1:成功 2:失败
it_acs_elevator_record_2030 RECOGNITION_NO varchar YES NULL 识别编号
it_acs_elevator_record_2030 RECOGNITION_TIME bigint NO NULL 识别时间
it_acs_elevator_record_2030 LOG_ID varchar YES NULL 请求唯一标志码
it_acs_elevator_record_2030 RECOGNITION_FACE_ID varchar YES NULL MUL 识别记录唯一标志码
it_acs_elevator_record_2030 CREATE_TIME bigint YES NULL 创建时间
it_acs_elevator_record_2030 CREATE_USER_ID varchar YES NULL 创建人
it_acs_elevator_record_2030 LAST_UPDATE_TIME bigint YES NULL 修改时间
it_acs_elevator_record_2030 LAST_UPDATE_USER_ID varchar YES NULL 修改人
it_acs_elevator_record_2030 SRC_FLOOR varchar YES NULL 进梯(当前)楼层
it_acs_elevator_record_2030 DEST_FLOOR varchar YES NULL 选层楼层
it_acs_elevator_record_2030 DISPATCH_ELEVATOR_NO varchar YES NULL 派梯梯号
it_acs_elevator_record_2030 DISPATCH_ELEVATOR_TIME bigint YES NULL 派梯时间
it_acs_elevator_record_2030 IS_VISITOR varchar YES NULL 是否访客:0-不是,1-是
it_acs_elevator_record_2030 INTERVIEWEE varchar YES NULL 被访人id
it_acs_elevator_record_2030 ORG_ID varchar YES NULL 机构id
it_acs_elevator_record_2030 ORG_NAME varchar YES NULL 机构名
it_acs_elevator_record_2030 PERSON_CODE varchar YES NULL 工号
it_acs_pass_rule ID varchar NO NULL PRI 唯一ID
it_acs_pass_rule BUSINESS_ID varchar NO NULL MUL 企业ID
it_acs_pass_rule ZONE_ID varchar NO NULL 楼层ID
it_acs_pass_rule ZONE_NAME varchar YES NULL 楼层名
it_acs_pass_rule NAME varchar NO NULL 通行规则名称
it_acs_pass_rule IMAGE_STORE_ID varchar NO NULL 图库id
it_acs_pass_rule PASSABLE_TIME_ID varchar YES NULL 通行时间id
it_acs_pass_rule VALID_DATE_CRON text YES NULL 通行时间cron
it_acs_pass_rule VALID_DATE_JSON text YES NULL 通行时间json
it_acs_pass_rule BEGIN_DATE bigint YES NULL 开始时间
it_acs_pass_rule END_DATE bigint YES NULL 结束时间
it_acs_pass_rule CREATE_TIME bigint YES NULL 创建时间
it_acs_pass_rule CREATE_USER_ID varchar YES NULL 创建人id
it_acs_pass_rule LAST_UPDATE_TIME bigint YES NULL 最后更新时间
it_acs_pass_rule LAST_UPDATE_USER_ID varchar YES NULL 最后更新人id
it_acs_pass_rule IS_DEFAULT tinyint YES 0 是否默认规则:0-不是,1-是
it_acs_recog_record ID varchar NO NULL PRI 主键
it_acs_recog_record PERSON_ID varchar YES NULL MUL 人员id
it_acs_recog_record PERSON_NAME varchar YES NULL 人员名称
it_acs_recog_record BUSINESS_ID varchar NO NULL 企业ID
it_acs_recog_record DEVICE_ID varchar YES NULL 设备id
it_acs_recog_record DEVICE_CODE varchar NO NULL 设备编号
it_acs_recog_record DEVICE_NAME varchar YES NULL 设备名称
it_acs_recog_record THRESHOLD decimal YES NULL 阈值
it_acs_recog_record DISTRICT_ID varchar YES NULL 省市区id
it_acs_recog_record AREA_ID varchar YES NULL 设备区位id
it_acs_recog_record DEVICE_TYPE_ID varchar YES NULL 设备类型ID
it_acs_recog_record DEVICE_TYPE_NAME varchar YES NULL 设备类型名称
it_acs_recog_record SUB_DEVICE_ID varchar YES NULL 子设备id
it_acs_recog_record SUB_DEVICE_CODE varchar YES NULL 子设备编号
it_acs_recog_record SUB_DEVICE_NAME varchar YES NULL 子设备名称
it_acs_recog_record SUB_DEVICE_TYPE_ID varchar YES NULL 子设备类型ID
it_acs_recog_record SUB_DEVICE_TYPE_NAME varchar YES NULL 子设备类型名称
it_acs_recog_record REGISTER_IMAGE_PATH varchar YES NULL 注册照片
it_acs_recog_record FACE_IMAGE_PATH varchar YES NULL 抓拍照
it_acs_recog_record PANORAMA_IMAGE_PATH varchar YES NULL 全景照
it_acs_recog_record SCORE decimal NO NULL 识别分数
it_acs_recog_record RECOGNITION_RESULT tinyint YES NULL 识别结果 1:成功 2:失败
it_acs_recog_record RECOGNITION_TIME bigint NO NULL 识别时间
it_acs_recog_record GROUP_ID varchar YES NULL 用户所在底库编号
it_acs_recog_record FACE_ID varchar NO NULL 识别到对应的注册图片编号
it_acs_recog_record QUALITY_SCORE decimal YES NULL 人脸质量总分
it_acs_recog_record LOG_ID varchar NO NULL 请求唯一标志码
it_acs_recog_record TEMP_SCORE decimal YES NULL 体温
it_acs_recog_record MASK_SCORE decimal NO NULL 口罩得分
it_acs_recog_record TEMP_THRESHOLD decimal YES NULL 体温阈值
it_acs_recog_record CARD_TYPE varchar YES NULL 证件类型
it_acs_recog_record SOURCE tinyint YES NULL 来源 1 识别 2 人证
it_acs_recog_record TEMP_IMAGE_PATH varchar YES NULL 热像图
it_acs_recog_record REMARK varchar YES NULL 备注
it_acs_recog_record CREATE_TIME bigint YES NULL 创建时间
it_acs_recog_record CREATE_USER_ID varchar YES NULL 创建人
it_acs_recog_record LAST_UPDATE_TIME bigint YES NULL 修改时间
it_acs_recog_record LAST_UPDATE_USER_ID varchar YES NULL 修改人
it_acs_recog_record PERSON_LABEL_IDS text YES NULL 人员id列表
it_acs_recog_record_2020 ID varchar NO NULL PRI 主键
it_acs_recog_record_2020 PERSON_ID varchar YES NULL 人员id
it_acs_recog_record_2020 PERSON_NAME varchar YES NULL 人员名称
it_acs_recog_record_2020 BUSINESS_ID varchar NO NULL 企业ID
it_acs_recog_record_2020 DEVICE_ID varchar YES NULL 设备id
it_acs_recog_record_2020 DEVICE_CODE varchar NO NULL 设备编号
it_acs_recog_record_2020 DEVICE_NAME varchar YES NULL 设备名称
it_acs_recog_record_2020 THRESHOLD decimal YES NULL 阈值
it_acs_recog_record_2020 DISTRICT_ID varchar YES NULL 省市区id
it_acs_recog_record_2020 AREA_ID varchar YES NULL 设备区位id
it_acs_recog_record_2020 DEVICE_TYPE_ID varchar YES NULL 设备类型ID
it_acs_recog_record_2020 DEVICE_TYPE_NAME varchar YES NULL 设备类型名称
it_acs_recog_record_2020 SUB_DEVICE_ID varchar YES NULL 子设备id
it_acs_recog_record_2020 SUB_DEVICE_CODE varchar YES NULL 子设备编号
it_acs_recog_record_2020 SUB_DEVICE_NAME varchar YES NULL 子设备名称
it_acs_recog_record_2020 SUB_DEVICE_TYPE_ID varchar YES NULL 子设备类型ID
it_acs_recog_record_2020 SUB_DEVICE_TYPE_NAME varchar YES NULL 子设备类型名称
it_acs_recog_record_2020 REGISTER_IMAGE_PATH varchar YES NULL 注册照片
it_acs_recog_record_2020 FACE_IMAGE_PATH varchar YES NULL 抓拍照
it_acs_recog_record_2020 PANORAMA_IMAGE_PATH varchar YES NULL 全景照
it_acs_recog_record_2020 SCORE decimal NO NULL 识别分数
it_acs_recog_record_2020 RECOGNITION_RESULT tinyint YES NULL 识别结果 1:成功 2:失败
it_acs_recog_record_2020 RECOGNITION_TIME bigint NO NULL 识别时间
it_acs_recog_record_2020 GROUP_ID varchar YES NULL 用户所在底库编号
it_acs_recog_record_2020 FACE_ID varchar NO NULL 识别到对应的注册图片编号
it_acs_recog_record_2020 QUALITY_SCORE decimal YES NULL 人脸质量总分
it_acs_recog_record_2020 LOG_ID varchar NO NULL 请求唯一标志码
it_acs_recog_record_2020 TEMP_SCORE decimal YES NULL 体温
it_acs_recog_record_2020 MASK_SCORE decimal NO NULL 口罩得分
it_acs_recog_record_2020 TEMP_THRESHOLD decimal YES NULL 体温阈值
it_acs_recog_record_2020 CARD_TYPE varchar YES NULL 证件类型
it_acs_recog_record_2020 SOURCE tinyint YES NULL 来源 1 识别 2 人证
it_acs_recog_record_2020 TEMP_IMAGE_PATH varchar YES NULL 热像图
it_acs_recog_record_2020 REMARK varchar YES NULL 备注
it_acs_recog_record_2020 CREATE_TIME bigint YES NULL 创建时间
it_acs_recog_record_2020 CREATE_USER_ID varchar YES NULL 创建人
it_acs_recog_record_2020 LAST_UPDATE_TIME bigint YES NULL 修改时间
it_acs_recog_record_2020 LAST_UPDATE_USER_ID varchar YES NULL 修改人
it_acs_recog_record_2020 PERSON_LABEL_IDS varchar YES NULL 人员id列表
it_acs_recog_record_2021 ID varchar NO NULL PRI 主键
it_acs_recog_record_2021 PERSON_ID varchar YES NULL 人员id
it_acs_recog_record_2021 PERSON_NAME varchar YES NULL 人员名称
it_acs_recog_record_2021 BUSINESS_ID varchar NO NULL 企业ID
it_acs_recog_record_2021 DEVICE_ID varchar YES NULL 设备id
it_acs_recog_record_2021 DEVICE_CODE varchar NO NULL 设备编号
it_acs_recog_record_2021 DEVICE_NAME varchar YES NULL 设备名称
it_acs_recog_record_2021 THRESHOLD decimal YES NULL 阈值
it_acs_recog_record_2021 DISTRICT_ID varchar YES NULL 省市区id
it_acs_recog_record_2021 AREA_ID varchar YES NULL 设备区位id
it_acs_recog_record_2021 DEVICE_TYPE_ID varchar YES NULL 设备类型ID
it_acs_recog_record_2021 DEVICE_TYPE_NAME varchar YES NULL 设备类型名称
it_acs_recog_record_2021 SUB_DEVICE_ID varchar YES NULL 子设备id
it_acs_recog_record_2021 SUB_DEVICE_CODE varchar YES NULL 子设备编号
it_acs_recog_record_2021 SUB_DEVICE_NAME varchar YES NULL 子设备名称
it_acs_recog_record_2021 SUB_DEVICE_TYPE_ID varchar YES NULL 子设备类型ID
it_acs_recog_record_2021 SUB_DEVICE_TYPE_NAME varchar YES NULL 子设备类型名称
it_acs_recog_record_2021 REGISTER_IMAGE_PATH varchar YES NULL 注册照片
it_acs_recog_record_2021 FACE_IMAGE_PATH varchar YES NULL 抓拍照
it_acs_recog_record_2021 PANORAMA_IMAGE_PATH varchar YES NULL 全景照
it_acs_recog_record_2021 SCORE decimal NO NULL 识别分数
it_acs_recog_record_2021 RECOGNITION_RESULT tinyint YES NULL 识别结果 1:成功 2:失败
it_acs_recog_record_2021 RECOGNITION_TIME bigint NO NULL 识别时间
it_acs_recog_record_2021 GROUP_ID varchar YES NULL 用户所在底库编号
it_acs_recog_record_2021 FACE_ID varchar NO NULL 识别到对应的注册图片编号
it_acs_recog_record_2021 QUALITY_SCORE decimal YES NULL 人脸质量总分
it_acs_recog_record_2021 LOG_ID varchar NO NULL 请求唯一标志码
it_acs_recog_record_2021 TEMP_SCORE decimal YES NULL 体温
it_acs_recog_record_2021 MASK_SCORE decimal NO NULL 口罩得分
it_acs_recog_record_2021 TEMP_THRESHOLD decimal YES NULL 体温阈值
it_acs_recog_record_2021 CARD_TYPE varchar YES NULL 证件类型
it_acs_recog_record_2021 SOURCE tinyint YES NULL 来源 1 识别 2 人证
it_acs_recog_record_2021 TEMP_IMAGE_PATH varchar YES NULL 热像图
it_acs_recog_record_2021 REMARK varchar YES NULL 备注
it_acs_recog_record_2021 CREATE_TIME bigint YES NULL 创建时间
it_acs_recog_record_2021 CREATE_USER_ID varchar YES NULL 创建人
it_acs_recog_record_2021 LAST_UPDATE_TIME bigint YES NULL 修改时间
it_acs_recog_record_2021 LAST_UPDATE_USER_ID varchar YES NULL 修改人
it_acs_recog_record_2021 PERSON_LABEL_IDS varchar YES NULL 人员id列表
it_acs_recog_record_2022 ID varchar NO NULL PRI 主键
it_acs_recog_record_2022 PERSON_ID varchar YES NULL 人员id
it_acs_recog_record_2022 PERSON_NAME varchar YES NULL 人员名称
it_acs_recog_record_2022 BUSINESS_ID varchar NO NULL 企业ID
it_acs_recog_record_2022 DEVICE_ID varchar YES NULL 设备id
it_acs_recog_record_2022 DEVICE_CODE varchar NO NULL 设备编号
it_acs_recog_record_2022 DEVICE_NAME varchar YES NULL 设备名称
it_acs_recog_record_2022 THRESHOLD decimal YES NULL 阈值
it_acs_recog_record_2022 DISTRICT_ID varchar YES NULL 省市区id
it_acs_recog_record_2022 AREA_ID varchar YES NULL 设备区位id
it_acs_recog_record_2022 DEVICE_TYPE_ID varchar YES NULL 设备类型ID
it_acs_recog_record_2022 DEVICE_TYPE_NAME varchar YES NULL 设备类型名称
it_acs_recog_record_2022 SUB_DEVICE_ID varchar YES NULL 子设备id
it_acs_recog_record_2022 SUB_DEVICE_CODE varchar YES NULL 子设备编号
it_acs_recog_record_2022 SUB_DEVICE_NAME varchar YES NULL 子设备名称
it_acs_recog_record_2022 SUB_DEVICE_TYPE_ID varchar YES NULL 子设备类型ID
it_acs_recog_record_2022 SUB_DEVICE_TYPE_NAME varchar YES NULL 子设备类型名称
it_acs_recog_record_2022 REGISTER_IMAGE_PATH varchar YES NULL 注册照片
it_acs_recog_record_2022 FACE_IMAGE_PATH varchar YES NULL 抓拍照
it_acs_recog_record_2022 PANORAMA_IMAGE_PATH varchar YES NULL 全景照
it_acs_recog_record_2022 SCORE decimal NO NULL 识别分数
it_acs_recog_record_2022 RECOGNITION_RESULT tinyint YES NULL 识别结果 1:成功 2:失败
it_acs_recog_record_2022 RECOGNITION_TIME bigint NO NULL 识别时间
it_acs_recog_record_2022 GROUP_ID varchar YES NULL 用户所在底库编号
it_acs_recog_record_2022 FACE_ID varchar NO NULL 识别到对应的注册图片编号
it_acs_recog_record_2022 QUALITY_SCORE decimal YES NULL 人脸质量总分
it_acs_recog_record_2022 LOG_ID varchar NO NULL 请求唯一标志码
it_acs_recog_record_2022 TEMP_SCORE decimal YES NULL 体温
it_acs_recog_record_2022 MASK_SCORE decimal NO NULL 口罩得分
it_acs_recog_record_2022 TEMP_THRESHOLD decimal YES NULL 体温阈值
it_acs_recog_record_2022 CARD_TYPE varchar YES NULL 证件类型
it_acs_recog_record_2022 SOURCE tinyint YES NULL 来源 1 识别 2 人证
it_acs_recog_record_2022 TEMP_IMAGE_PATH varchar YES NULL 热像图
it_acs_recog_record_2022 REMARK varchar YES NULL 备注
it_acs_recog_record_2022 CREATE_TIME bigint YES NULL 创建时间
it_acs_recog_record_2022 CREATE_USER_ID varchar YES NULL 创建人
it_acs_recog_record_2022 LAST_UPDATE_TIME bigint YES NULL 修改时间
it_acs_recog_record_2022 LAST_UPDATE_USER_ID varchar YES NULL 修改人
it_acs_recog_record_2022 PERSON_LABEL_IDS varchar YES NULL 人员id列表
it_acs_recog_record_2023 ID varchar NO NULL PRI 主键
it_acs_recog_record_2023 PERSON_ID varchar YES NULL 人员id
it_acs_recog_record_2023 PERSON_NAME varchar YES NULL 人员名称
it_acs_recog_record_2023 BUSINESS_ID varchar NO NULL 企业ID
it_acs_recog_record_2023 DEVICE_ID varchar YES NULL 设备id
it_acs_recog_record_2023 DEVICE_CODE varchar NO NULL 设备编号
it_acs_recog_record_2023 DEVICE_NAME varchar YES NULL 设备名称
it_acs_recog_record_2023 THRESHOLD decimal YES NULL 阈值
it_acs_recog_record_2023 DISTRICT_ID varchar YES NULL 省市区id
it_acs_recog_record_2023 AREA_ID varchar YES NULL 设备区位id
it_acs_recog_record_2023 DEVICE_TYPE_ID varchar YES NULL 设备类型ID
it_acs_recog_record_2023 DEVICE_TYPE_NAME varchar YES NULL 设备类型名称
it_acs_recog_record_2023 SUB_DEVICE_ID varchar YES NULL 子设备id
it_acs_recog_record_2023 SUB_DEVICE_CODE varchar YES NULL 子设备编号
it_acs_recog_record_2023 SUB_DEVICE_NAME varchar YES NULL 子设备名称
it_acs_recog_record_2023 SUB_DEVICE_TYPE_ID varchar YES NULL 子设备类型ID
it_acs_recog_record_2023 SUB_DEVICE_TYPE_NAME varchar YES NULL 子设备类型名称
it_acs_recog_record_2023 REGISTER_IMAGE_PATH varchar YES NULL 注册照片
it_acs_recog_record_2023 FACE_IMAGE_PATH varchar YES NULL 抓拍照
it_acs_recog_record_2023 PANORAMA_IMAGE_PATH varchar YES NULL 全景照
it_acs_recog_record_2023 SCORE decimal NO NULL 识别分数
it_acs_recog_record_2023 RECOGNITION_RESULT tinyint YES NULL 识别结果 1:成功 2:失败
it_acs_recog_record_2023 RECOGNITION_TIME bigint NO NULL MUL 识别时间
it_acs_recog_record_2023 GROUP_ID varchar YES NULL 用户所在底库编号
it_acs_recog_record_2023 FACE_ID varchar NO NULL 识别到对应的注册图片编号
it_acs_recog_record_2023 QUALITY_SCORE decimal YES NULL 人脸质量总分
it_acs_recog_record_2023 LOG_ID varchar NO NULL 请求唯一标志码
it_acs_recog_record_2023 TEMP_SCORE decimal YES NULL 体温
it_acs_recog_record_2023 MASK_SCORE decimal NO NULL 口罩得分
it_acs_recog_record_2023 TEMP_THRESHOLD decimal YES NULL 体温阈值
it_acs_recog_record_2023 CARD_TYPE varchar YES NULL 证件类型
it_acs_recog_record_2023 SOURCE tinyint YES NULL 来源 1 识别 2 人证
it_acs_recog_record_2023 TEMP_IMAGE_PATH varchar YES NULL 热像图
it_acs_recog_record_2023 REMARK varchar YES NULL 备注
it_acs_recog_record_2023 CREATE_TIME bigint YES NULL 创建时间
it_acs_recog_record_2023 CREATE_USER_ID varchar YES NULL 创建人
it_acs_recog_record_2023 LAST_UPDATE_TIME bigint YES NULL 修改时间
it_acs_recog_record_2023 LAST_UPDATE_USER_ID varchar YES NULL 修改人
it_acs_recog_record_2023 PERSON_LABEL_IDS text YES NULL 人员id列表
it_acs_recog_record_2024 ID varchar NO NULL PRI 主键
it_acs_recog_record_2024 PERSON_ID varchar YES NULL 人员id
it_acs_recog_record_2024 PERSON_NAME varchar YES NULL 人员名称
it_acs_recog_record_2024 BUSINESS_ID varchar NO NULL 企业ID
it_acs_recog_record_2024 DEVICE_ID varchar YES NULL 设备id
it_acs_recog_record_2024 DEVICE_CODE varchar NO NULL 设备编号
it_acs_recog_record_2024 DEVICE_NAME varchar YES NULL 设备名称
it_acs_recog_record_2024 THRESHOLD decimal YES NULL 阈值
it_acs_recog_record_2024 DISTRICT_ID varchar YES NULL 省市区id
it_acs_recog_record_2024 AREA_ID varchar YES NULL 设备区位id
it_acs_recog_record_2024 DEVICE_TYPE_ID varchar YES NULL 设备类型ID
it_acs_recog_record_2024 DEVICE_TYPE_NAME varchar YES NULL 设备类型名称
it_acs_recog_record_2024 SUB_DEVICE_ID varchar YES NULL 子设备id
it_acs_recog_record_2024 SUB_DEVICE_CODE varchar YES NULL 子设备编号
it_acs_recog_record_2024 SUB_DEVICE_NAME varchar YES NULL 子设备名称
it_acs_recog_record_2024 SUB_DEVICE_TYPE_ID varchar YES NULL 子设备类型ID
it_acs_recog_record_2024 SUB_DEVICE_TYPE_NAME varchar YES NULL 子设备类型名称
it_acs_recog_record_2024 REGISTER_IMAGE_PATH varchar YES NULL 注册照片
it_acs_recog_record_2024 FACE_IMAGE_PATH varchar YES NULL 抓拍照
it_acs_recog_record_2024 PANORAMA_IMAGE_PATH varchar YES NULL 全景照
it_acs_recog_record_2024 SCORE decimal NO NULL 识别分数
it_acs_recog_record_2024 RECOGNITION_RESULT tinyint YES NULL 识别结果 1:成功 2:失败
it_acs_recog_record_2024 RECOGNITION_TIME bigint NO NULL 识别时间
it_acs_recog_record_2024 GROUP_ID varchar YES NULL 用户所在底库编号
it_acs_recog_record_2024 FACE_ID varchar NO NULL 识别到对应的注册图片编号
it_acs_recog_record_2024 QUALITY_SCORE decimal YES NULL 人脸质量总分
it_acs_recog_record_2024 LOG_ID varchar NO NULL 请求唯一标志码
it_acs_recog_record_2024 TEMP_SCORE decimal YES NULL 体温
it_acs_recog_record_2024 MASK_SCORE decimal NO NULL 口罩得分
it_acs_recog_record_2024 TEMP_THRESHOLD decimal YES NULL 体温阈值
it_acs_recog_record_2024 CARD_TYPE varchar YES NULL 证件类型
it_acs_recog_record_2024 SOURCE tinyint YES NULL 来源 1 识别 2 人证
it_acs_recog_record_2024 TEMP_IMAGE_PATH varchar YES NULL 热像图
it_acs_recog_record_2024 REMARK varchar YES NULL 备注
it_acs_recog_record_2024 CREATE_TIME bigint YES NULL 创建时间
it_acs_recog_record_2024 CREATE_USER_ID varchar YES NULL 创建人
it_acs_recog_record_2024 LAST_UPDATE_TIME bigint YES NULL 修改时间
it_acs_recog_record_2024 LAST_UPDATE_USER_ID varchar YES NULL 修改人
it_acs_recog_record_2024 PERSON_LABEL_IDS text YES NULL 人员id列表
it_acs_recog_record_2025 ID varchar NO NULL PRI 主键
it_acs_recog_record_2025 PERSON_ID varchar YES NULL 人员id
it_acs_recog_record_2025 PERSON_NAME varchar YES NULL 人员名称
it_acs_recog_record_2025 BUSINESS_ID varchar NO NULL 企业ID
it_acs_recog_record_2025 DEVICE_ID varchar YES NULL 设备id
it_acs_recog_record_2025 DEVICE_CODE varchar NO NULL 设备编号
it_acs_recog_record_2025 DEVICE_NAME varchar YES NULL 设备名称
it_acs_recog_record_2025 THRESHOLD decimal YES NULL 阈值
it_acs_recog_record_2025 DISTRICT_ID varchar YES NULL 省市区id
it_acs_recog_record_2025 AREA_ID varchar YES NULL 设备区位id
it_acs_recog_record_2025 DEVICE_TYPE_ID varchar YES NULL 设备类型ID
it_acs_recog_record_2025 DEVICE_TYPE_NAME varchar YES NULL 设备类型名称
it_acs_recog_record_2025 SUB_DEVICE_ID varchar YES NULL 子设备id
it_acs_recog_record_2025 SUB_DEVICE_CODE varchar YES NULL 子设备编号
it_acs_recog_record_2025 SUB_DEVICE_NAME varchar YES NULL 子设备名称
it_acs_recog_record_2025 SUB_DEVICE_TYPE_ID varchar YES NULL 子设备类型ID
it_acs_recog_record_2025 SUB_DEVICE_TYPE_NAME varchar YES NULL 子设备类型名称
it_acs_recog_record_2025 REGISTER_IMAGE_PATH varchar YES NULL 注册照片
it_acs_recog_record_2025 FACE_IMAGE_PATH varchar YES NULL 抓拍照
it_acs_recog_record_2025 PANORAMA_IMAGE_PATH varchar YES NULL 全景照
it_acs_recog_record_2025 SCORE decimal NO NULL 识别分数
it_acs_recog_record_2025 RECOGNITION_RESULT tinyint YES NULL 识别结果 1:成功 2:失败
it_acs_recog_record_2025 RECOGNITION_TIME bigint NO NULL 识别时间
it_acs_recog_record_2025 GROUP_ID varchar YES NULL 用户所在底库编号
it_acs_recog_record_2025 FACE_ID varchar NO NULL 识别到对应的注册图片编号
it_acs_recog_record_2025 QUALITY_SCORE decimal YES NULL 人脸质量总分
it_acs_recog_record_2025 LOG_ID varchar NO NULL 请求唯一标志码
it_acs_recog_record_2025 TEMP_SCORE decimal YES NULL 体温
it_acs_recog_record_2025 MASK_SCORE decimal NO NULL 口罩得分
it_acs_recog_record_2025 TEMP_THRESHOLD decimal YES NULL 体温阈值
it_acs_recog_record_2025 CARD_TYPE varchar YES NULL 证件类型
it_acs_recog_record_2025 SOURCE tinyint YES NULL 来源 1 识别 2 人证
it_acs_recog_record_2025 TEMP_IMAGE_PATH varchar YES NULL 热像图
it_acs_recog_record_2025 REMARK varchar YES NULL 备注
it_acs_recog_record_2025 CREATE_TIME bigint YES NULL 创建时间
it_acs_recog_record_2025 CREATE_USER_ID varchar YES NULL 创建人
it_acs_recog_record_2025 LAST_UPDATE_TIME bigint YES NULL 修改时间
it_acs_recog_record_2025 LAST_UPDATE_USER_ID varchar YES NULL 修改人
it_acs_recog_record_2025 PERSON_LABEL_IDS text YES NULL 人员id列表
it_acs_recog_record_2026 ID varchar NO NULL PRI 主键
it_acs_recog_record_2026 PERSON_ID varchar YES NULL 人员id
it_acs_recog_record_2026 PERSON_NAME varchar YES NULL 人员名称
it_acs_recog_record_2026 BUSINESS_ID varchar NO NULL 企业ID
it_acs_recog_record_2026 DEVICE_ID varchar YES NULL 设备id
it_acs_recog_record_2026 DEVICE_CODE varchar NO NULL 设备编号
it_acs_recog_record_2026 DEVICE_NAME varchar YES NULL 设备名称
it_acs_recog_record_2026 THRESHOLD decimal YES NULL 阈值
it_acs_recog_record_2026 DISTRICT_ID varchar YES NULL 省市区id
it_acs_recog_record_2026 AREA_ID varchar YES NULL 设备区位id
it_acs_recog_record_2026 DEVICE_TYPE_ID varchar YES NULL 设备类型ID
it_acs_recog_record_2026 DEVICE_TYPE_NAME varchar YES NULL 设备类型名称
it_acs_recog_record_2026 SUB_DEVICE_ID varchar YES NULL 子设备id
it_acs_recog_record_2026 SUB_DEVICE_CODE varchar YES NULL 子设备编号
it_acs_recog_record_2026 SUB_DEVICE_NAME varchar YES NULL 子设备名称
it_acs_recog_record_2026 SUB_DEVICE_TYPE_ID varchar YES NULL 子设备类型ID
it_acs_recog_record_2026 SUB_DEVICE_TYPE_NAME varchar YES NULL 子设备类型名称
it_acs_recog_record_2026 REGISTER_IMAGE_PATH varchar YES NULL 注册照片
it_acs_recog_record_2026 FACE_IMAGE_PATH varchar YES NULL 抓拍照
it_acs_recog_record_2026 PANORAMA_IMAGE_PATH varchar YES NULL 全景照
it_acs_recog_record_2026 SCORE decimal NO NULL 识别分数
it_acs_recog_record_2026 RECOGNITION_RESULT tinyint YES NULL 识别结果 1:成功 2:失败
it_acs_recog_record_2026 RECOGNITION_TIME bigint NO NULL 识别时间
it_acs_recog_record_2026 GROUP_ID varchar YES NULL 用户所在底库编号
it_acs_recog_record_2026 FACE_ID varchar NO NULL 识别到对应的注册图片编号
it_acs_recog_record_2026 QUALITY_SCORE decimal YES NULL 人脸质量总分
it_acs_recog_record_2026 LOG_ID varchar NO NULL 请求唯一标志码
it_acs_recog_record_2026 TEMP_SCORE decimal YES NULL 体温
it_acs_recog_record_2026 MASK_SCORE decimal NO NULL 口罩得分
it_acs_recog_record_2026 TEMP_THRESHOLD decimal YES NULL 体温阈值
it_acs_recog_record_2026 CARD_TYPE varchar YES NULL 证件类型
it_acs_recog_record_2026 SOURCE tinyint YES NULL 来源 1 识别 2 人证
it_acs_recog_record_2026 TEMP_IMAGE_PATH varchar YES NULL 热像图
it_acs_recog_record_2026 REMARK varchar YES NULL 备注
it_acs_recog_record_2026 CREATE_TIME bigint YES NULL 创建时间
it_acs_recog_record_2026 CREATE_USER_ID varchar YES NULL 创建人
it_acs_recog_record_2026 LAST_UPDATE_TIME bigint YES NULL 修改时间
it_acs_recog_record_2026 LAST_UPDATE_USER_ID varchar YES NULL 修改人
it_acs_recog_record_2026 PERSON_LABEL_IDS varchar YES NULL 人员id列表
it_acs_recog_record_2027 ID varchar NO NULL PRI 主键
it_acs_recog_record_2027 PERSON_ID varchar YES NULL 人员id
it_acs_recog_record_2027 PERSON_NAME varchar YES NULL 人员名称
it_acs_recog_record_2027 BUSINESS_ID varchar NO NULL 企业ID
it_acs_recog_record_2027 DEVICE_ID varchar YES NULL 设备id
it_acs_recog_record_2027 DEVICE_CODE varchar NO NULL 设备编号
it_acs_recog_record_2027 DEVICE_NAME varchar YES NULL 设备名称
it_acs_recog_record_2027 THRESHOLD decimal YES NULL 阈值
it_acs_recog_record_2027 DISTRICT_ID varchar YES NULL 省市区id
it_acs_recog_record_2027 AREA_ID varchar YES NULL 设备区位id
it_acs_recog_record_2027 DEVICE_TYPE_ID varchar YES NULL 设备类型ID
it_acs_recog_record_2027 DEVICE_TYPE_NAME varchar YES NULL 设备类型名称
it_acs_recog_record_2027 SUB_DEVICE_ID varchar YES NULL 子设备id
it_acs_recog_record_2027 SUB_DEVICE_CODE varchar YES NULL 子设备编号
it_acs_recog_record_2027 SUB_DEVICE_NAME varchar YES NULL 子设备名称
it_acs_recog_record_2027 SUB_DEVICE_TYPE_ID varchar YES NULL 子设备类型ID
it_acs_recog_record_2027 SUB_DEVICE_TYPE_NAME varchar YES NULL 子设备类型名称
it_acs_recog_record_2027 REGISTER_IMAGE_PATH varchar YES NULL 注册照片
it_acs_recog_record_2027 FACE_IMAGE_PATH varchar YES NULL 抓拍照
it_acs_recog_record_2027 PANORAMA_IMAGE_PATH varchar YES NULL 全景照
it_acs_recog_record_2027 SCORE decimal NO NULL 识别分数
it_acs_recog_record_2027 RECOGNITION_RESULT tinyint YES NULL 识别结果 1:成功 2:失败
it_acs_recog_record_2027 RECOGNITION_TIME bigint NO NULL 识别时间
it_acs_recog_record_2027 GROUP_ID varchar YES NULL 用户所在底库编号
it_acs_recog_record_2027 FACE_ID varchar NO NULL 识别到对应的注册图片编号
it_acs_recog_record_2027 QUALITY_SCORE decimal YES NULL 人脸质量总分
it_acs_recog_record_2027 LOG_ID varchar NO NULL 请求唯一标志码
it_acs_recog_record_2027 TEMP_SCORE decimal YES NULL 体温
it_acs_recog_record_2027 MASK_SCORE decimal NO NULL 口罩得分
it_acs_recog_record_2027 TEMP_THRESHOLD decimal YES NULL 体温阈值
it_acs_recog_record_2027 CARD_TYPE varchar YES NULL 证件类型
it_acs_recog_record_2027 SOURCE tinyint YES NULL 来源 1 识别 2 人证
it_acs_recog_record_2027 TEMP_IMAGE_PATH varchar YES NULL 热像图
it_acs_recog_record_2027 REMARK varchar YES NULL 备注
it_acs_recog_record_2027 CREATE_TIME bigint YES NULL 创建时间
it_acs_recog_record_2027 CREATE_USER_ID varchar YES NULL 创建人
it_acs_recog_record_2027 LAST_UPDATE_TIME bigint YES NULL 修改时间
it_acs_recog_record_2027 LAST_UPDATE_USER_ID varchar YES NULL 修改人
it_acs_recog_record_2027 PERSON_LABEL_IDS varchar YES NULL 人员id列表
it_acs_recog_record_2028 ID varchar NO NULL PRI 主键
it_acs_recog_record_2028 PERSON_ID varchar YES NULL 人员id
it_acs_recog_record_2028 PERSON_NAME varchar YES NULL 人员名称
it_acs_recog_record_2028 BUSINESS_ID varchar NO NULL 企业ID
it_acs_recog_record_2028 DEVICE_ID varchar YES NULL 设备id
it_acs_recog_record_2028 DEVICE_CODE varchar NO NULL 设备编号
it_acs_recog_record_2028 DEVICE_NAME varchar YES NULL 设备名称
it_acs_recog_record_2028 THRESHOLD decimal YES NULL 阈值
it_acs_recog_record_2028 DISTRICT_ID varchar YES NULL 省市区id
it_acs_recog_record_2028 AREA_ID varchar YES NULL 设备区位id
it_acs_recog_record_2028 DEVICE_TYPE_ID varchar YES NULL 设备类型ID
it_acs_recog_record_2028 DEVICE_TYPE_NAME varchar YES NULL 设备类型名称
it_acs_recog_record_2028 SUB_DEVICE_ID varchar YES NULL 子设备id
it_acs_recog_record_2028 SUB_DEVICE_CODE varchar YES NULL 子设备编号
it_acs_recog_record_2028 SUB_DEVICE_NAME varchar YES NULL 子设备名称
it_acs_recog_record_2028 SUB_DEVICE_TYPE_ID varchar YES NULL 子设备类型ID
it_acs_recog_record_2028 SUB_DEVICE_TYPE_NAME varchar YES NULL 子设备类型名称
it_acs_recog_record_2028 REGISTER_IMAGE_PATH varchar YES NULL 注册照片
it_acs_recog_record_2028 FACE_IMAGE_PATH varchar YES NULL 抓拍照
it_acs_recog_record_2028 PANORAMA_IMAGE_PATH varchar YES NULL 全景照
it_acs_recog_record_2028 SCORE decimal NO NULL 识别分数
it_acs_recog_record_2028 RECOGNITION_RESULT tinyint YES NULL 识别结果 1:成功 2:失败
it_acs_recog_record_2028 RECOGNITION_TIME bigint NO NULL 识别时间
it_acs_recog_record_2028 GROUP_ID varchar YES NULL 用户所在底库编号
it_acs_recog_record_2028 FACE_ID varchar NO NULL 识别到对应的注册图片编号
it_acs_recog_record_2028 QUALITY_SCORE decimal YES NULL 人脸质量总分
it_acs_recog_record_2028 LOG_ID varchar NO NULL 请求唯一标志码
it_acs_recog_record_2028 TEMP_SCORE decimal YES NULL 体温
it_acs_recog_record_2028 MASK_SCORE decimal NO NULL 口罩得分
it_acs_recog_record_2028 TEMP_THRESHOLD decimal YES NULL 体温阈值
it_acs_recog_record_2028 CARD_TYPE varchar YES NULL 证件类型
it_acs_recog_record_2028 SOURCE tinyint YES NULL 来源 1 识别 2 人证
it_acs_recog_record_2028 TEMP_IMAGE_PATH varchar YES NULL 热像图
it_acs_recog_record_2028 REMARK varchar YES NULL 备注
it_acs_recog_record_2028 CREATE_TIME bigint YES NULL 创建时间
it_acs_recog_record_2028 CREATE_USER_ID varchar YES NULL 创建人
it_acs_recog_record_2028 LAST_UPDATE_TIME bigint YES NULL 修改时间
it_acs_recog_record_2028 LAST_UPDATE_USER_ID varchar YES NULL 修改人
it_acs_recog_record_2028 PERSON_LABEL_IDS varchar YES NULL 人员id列表
it_acs_recog_record_2029 ID varchar NO NULL PRI 主键
it_acs_recog_record_2029 PERSON_ID varchar YES NULL 人员id
it_acs_recog_record_2029 PERSON_NAME varchar YES NULL 人员名称
it_acs_recog_record_2029 BUSINESS_ID varchar NO NULL 企业ID
it_acs_recog_record_2029 DEVICE_ID varchar YES NULL 设备id
it_acs_recog_record_2029 DEVICE_CODE varchar NO NULL 设备编号
it_acs_recog_record_2029 DEVICE_NAME varchar YES NULL 设备名称
it_acs_recog_record_2029 THRESHOLD decimal YES NULL 阈值
it_acs_recog_record_2029 DISTRICT_ID varchar YES NULL 省市区id
it_acs_recog_record_2029 AREA_ID varchar YES NULL 设备区位id
it_acs_recog_record_2029 DEVICE_TYPE_ID varchar YES NULL 设备类型ID
it_acs_recog_record_2029 DEVICE_TYPE_NAME varchar YES NULL 设备类型名称
it_acs_recog_record_2029 SUB_DEVICE_ID varchar YES NULL 子设备id
it_acs_recog_record_2029 SUB_DEVICE_CODE varchar YES NULL 子设备编号
it_acs_recog_record_2029 SUB_DEVICE_NAME varchar YES NULL 子设备名称
it_acs_recog_record_2029 SUB_DEVICE_TYPE_ID varchar YES NULL 子设备类型ID
it_acs_recog_record_2029 SUB_DEVICE_TYPE_NAME varchar YES NULL 子设备类型名称
it_acs_recog_record_2029 REGISTER_IMAGE_PATH varchar YES NULL 注册照片
it_acs_recog_record_2029 FACE_IMAGE_PATH varchar YES NULL 抓拍照
it_acs_recog_record_2029 PANORAMA_IMAGE_PATH varchar YES NULL 全景照
it_acs_recog_record_2029 SCORE decimal NO NULL 识别分数
it_acs_recog_record_2029 RECOGNITION_RESULT tinyint YES NULL 识别结果 1:成功 2:失败
it_acs_recog_record_2029 RECOGNITION_TIME bigint NO NULL 识别时间
it_acs_recog_record_2029 GROUP_ID varchar YES NULL 用户所在底库编号
it_acs_recog_record_2029 FACE_ID varchar NO NULL 识别到对应的注册图片编号
it_acs_recog_record_2029 QUALITY_SCORE decimal YES NULL 人脸质量总分
it_acs_recog_record_2029 LOG_ID varchar NO NULL 请求唯一标志码
it_acs_recog_record_2029 TEMP_SCORE decimal YES NULL 体温
it_acs_recog_record_2029 MASK_SCORE decimal NO NULL 口罩得分
it_acs_recog_record_2029 TEMP_THRESHOLD decimal YES NULL 体温阈值
it_acs_recog_record_2029 CARD_TYPE varchar YES NULL 证件类型
it_acs_recog_record_2029 SOURCE tinyint YES NULL 来源 1 识别 2 人证
it_acs_recog_record_2029 TEMP_IMAGE_PATH varchar YES NULL 热像图
it_acs_recog_record_2029 REMARK varchar YES NULL 备注
it_acs_recog_record_2029 CREATE_TIME bigint YES NULL 创建时间
it_acs_recog_record_2029 CREATE_USER_ID varchar YES NULL 创建人
it_acs_recog_record_2029 LAST_UPDATE_TIME bigint YES NULL 修改时间
it_acs_recog_record_2029 LAST_UPDATE_USER_ID varchar YES NULL 修改人
it_acs_recog_record_2029 PERSON_LABEL_IDS varchar YES NULL 人员id列表
it_acs_recog_record_2030 ID varchar NO NULL PRI 主键
it_acs_recog_record_2030 PERSON_ID varchar YES NULL 人员id
it_acs_recog_record_2030 PERSON_NAME varchar YES NULL 人员名称
it_acs_recog_record_2030 BUSINESS_ID varchar NO NULL 企业ID
it_acs_recog_record_2030 DEVICE_ID varchar YES NULL 设备id
it_acs_recog_record_2030 DEVICE_CODE varchar NO NULL 设备编号
it_acs_recog_record_2030 DEVICE_NAME varchar YES NULL 设备名称
it_acs_recog_record_2030 THRESHOLD decimal YES NULL 阈值
it_acs_recog_record_2030 DISTRICT_ID varchar YES NULL 省市区id
it_acs_recog_record_2030 AREA_ID varchar YES NULL 设备区位id
it_acs_recog_record_2030 DEVICE_TYPE_ID varchar YES NULL 设备类型ID
it_acs_recog_record_2030 DEVICE_TYPE_NAME varchar YES NULL 设备类型名称
it_acs_recog_record_2030 SUB_DEVICE_ID varchar YES NULL 子设备id
it_acs_recog_record_2030 SUB_DEVICE_CODE varchar YES NULL 子设备编号
it_acs_recog_record_2030 SUB_DEVICE_NAME varchar YES NULL 子设备名称
it_acs_recog_record_2030 SUB_DEVICE_TYPE_ID varchar YES NULL 子设备类型ID
it_acs_recog_record_2030 SUB_DEVICE_TYPE_NAME varchar YES NULL 子设备类型名称
it_acs_recog_record_2030 REGISTER_IMAGE_PATH varchar YES NULL 注册照片
it_acs_recog_record_2030 FACE_IMAGE_PATH varchar YES NULL 抓拍照
it_acs_recog_record_2030 PANORAMA_IMAGE_PATH varchar YES NULL 全景照
it_acs_recog_record_2030 SCORE decimal NO NULL 识别分数
it_acs_recog_record_2030 RECOGNITION_RESULT tinyint YES NULL 识别结果 1:成功 2:失败
it_acs_recog_record_2030 RECOGNITION_TIME bigint NO NULL 识别时间
it_acs_recog_record_2030 GROUP_ID varchar YES NULL 用户所在底库编号
it_acs_recog_record_2030 FACE_ID varchar NO NULL 识别到对应的注册图片编号
it_acs_recog_record_2030 QUALITY_SCORE decimal YES NULL 人脸质量总分
it_acs_recog_record_2030 LOG_ID varchar NO NULL 请求唯一标志码
it_acs_recog_record_2030 TEMP_SCORE decimal YES NULL 体温
it_acs_recog_record_2030 MASK_SCORE decimal NO NULL 口罩得分
it_acs_recog_record_2030 TEMP_THRESHOLD decimal YES NULL 体温阈值
it_acs_recog_record_2030 CARD_TYPE varchar YES NULL 证件类型
it_acs_recog_record_2030 SOURCE tinyint YES NULL 来源 1 识别 2 人证
it_acs_recog_record_2030 TEMP_IMAGE_PATH varchar YES NULL 热像图
it_acs_recog_record_2030 REMARK varchar YES NULL 备注
it_acs_recog_record_2030 CREATE_TIME bigint YES NULL 创建时间
it_acs_recog_record_2030 CREATE_USER_ID varchar YES NULL 创建人
it_acs_recog_record_2030 LAST_UPDATE_TIME bigint YES NULL 修改时间
it_acs_recog_record_2030 LAST_UPDATE_USER_ID varchar YES NULL 修改人
it_acs_recog_record_2030 PERSON_LABEL_IDS varchar YES NULL 人员id列表
send_record_time time bigint NO NULL 时间戳
send_record_time type tinyint NO NULL 类型:1-通行记录,2-开门记录
send_record_timebak time bigint NO NULL 时间戳
send_record_timebak type tinyint NO NULL 类型:1-通行记录,2-开门记录
tenant_visitor_floor_policy id varchar NO NULL PRI 主键
tenant_visitor_floor_policy business_id varchar NO NULL MUL 机构/租户 ID
tenant_visitor_floor_policy policy_type varchar NO INTERSECT_ALLOWLIST 策略类型
tenant_visitor_floor_policy allow_zone_ids text YES NULL JSON 数组,zoneId 列表
tenant_visitor_floor_policy building_id varchar YES NULL 预留:楼栋维度;租户默认填 NULL
tenant_visitor_floor_policy enabled tinyint NO 1 1 启用 0 停用
tenant_visitor_floor_policy policy_version bigint NO 1 配置版本号
tenant_visitor_floor_policy remark varchar YES NULL
tenant_visitor_floor_policy created_by varchar YES NULL
tenant_visitor_floor_policy created_at bigint YES NULL
tenant_visitor_floor_policy updated_by varchar YES NULL
tenant_visitor_floor_policy updated_at bigint YES NULL
1 mysql: [Warning] Using a password on the command line interface can be insecure.
2 code_elevator_area zone_id varchar NO NULL 电梯编码
3 code_elevator_area code varchar NO NULL 地区编码
4 code_elevator_area create_time bigint YES NULL
5 code_elevator_area last_update_time bigint YES NULL
6 code_elevator_area is_first tinyint YES NULL 是否首层:0-不是,1-是
7 code_elevator_area parent_id varchar YES NULL 父级id
8 device_image_store building_id varchar NO NULL 楼栋id
9 device_image_store image_store_id varchar NO NULL 图库id
10 elevator_device ID bigint NO NULL PRI auto_increment 主键id
11 elevator_device create_time bigint NO NULL 创建时间
12 elevator_device last_update_time bigint NO NULL 最近修改时间
13 elevator_device delete_flag tinyint NO 0 是否删除(0,删除;1,未删除)
14 elevator_device device_id varchar YES NULL 设备id
15 elevator_device device_name varchar NO NULL 设备名称
16 elevator_device device_code varchar YES NULL 设备编码
17 elevator_device device_type_name varchar NO NULL 设备类型名称
18 elevator_device status tinyint YES NULL 设备状态(1:禁用,2:在线,3:离线)
19 elevator_device area_name varchar YES NULL 空间位置
20 elevator_device current_building_id varchar YES NULL 楼栋id
21 elevator_device current_building varchar YES NULL 当前楼栋
22 elevator_device current_floor_id varchar YES NULL 楼层id
23 elevator_device current_floor varchar YES NULL 当前楼层
24 elevator_device elevator_floor_list varchar YES NULL 派梯楼层(,隔开)
25 elevator_device elevator_floor_id_list varchar YES NULL 派梯楼层ID(,隔开)
26 elevator_device business_id varchar NO NULL 租户id
27 elevator_device area_id varchar YES NULL 地区编码
28 image_rule_ref id varchar NO NULL PRI 唯一标识
29 image_rule_ref zone_id varchar NO NULL 楼层id
30 image_rule_ref zone_name varchar YES NULL 楼层名
31 image_rule_ref name varchar YES NULL 规则名
32 image_rule_ref person_id varchar YES NULL 人员id
33 image_rule_ref include_labels varchar YES NULL MUL 人员包含的标签
34 image_rule_ref include_organizations varchar YES NULL MUL 人员所在的机构
35 image_rule_ref exclude_labels varchar YES NULL 排除的人员标签
36 image_rule_ref is_default tinyint YES 0 是否默认规则:0-不是,1-是
37 image_rule_ref start_time bigint YES NULL 开始时间
38 image_rule_ref end_time bigint YES NULL 结束时间
39 image_rule_ref create_time bigint YES NULL 创建时间
40 image_rule_ref last_update_time bigint YES NULL 最近修改时间
41 image_rule_ref business_id varchar YES NULL 企业id
42 image_rule_ref parent_rule varchar YES NULL 归属规则id
43 image_rule_ref person_delete tinyint YES 0 人员是否删除了:0-未删除,1-已删除
44 it_acs_device_task id varchar NO NULL PRI 任务id
45 it_acs_device_task ALL_DEVICES int NO NULL 需要处理设备总数
46 it_acs_device_task BIND_DEVICES int NO NULL 已处理设备数
47 it_acs_device_task IS_STOP int NO NULL 是否终止:0-执行,1-终止
48 it_acs_elevator_record ID varchar NO NULL PRI 主键
49 it_acs_elevator_record BUSINESS_ID varchar NO NULL MUL 企业ID
50 it_acs_elevator_record DEVICE_ID varchar YES NULL 设备id
51 it_acs_elevator_record DEVICE_CODE varchar NO NULL 设备编号
52 it_acs_elevator_record DEVICE_NAME varchar YES NULL 设备名称
53 it_acs_elevator_record DEVICE_TYPE_ID varchar YES NULL 设备类型ID
54 it_acs_elevator_record DEVICE_TYPE_NAME varchar YES NULL 设备类型名称
55 it_acs_elevator_record DISTRICT_ID varchar YES NULL 省市区id
56 it_acs_elevator_record AREA_ID varchar YES NULL 设备区位id
57 it_acs_elevator_record OPEN_DOOR_TYPE varchar NO NULL 开门方式
58 it_acs_elevator_record OPERATE_NAME varchar YES NULL 操作人员名称
59 it_acs_elevator_record FACE_IMAGE_PATH varchar YES NULL 抓拍照
60 it_acs_elevator_record PANORAMA_IMAGE_PATH varchar YES NULL 全景照
61 it_acs_elevator_record RECORD_RESULT tinyint YES 1 开门结果 1:成功 2:失败
62 it_acs_elevator_record RECOGNITION_NO varchar YES NULL 识别编号
63 it_acs_elevator_record RECOGNITION_TIME bigint NO NULL 识别时间
64 it_acs_elevator_record LOG_ID varchar YES NULL 请求唯一标志码
65 it_acs_elevator_record RECOGNITION_FACE_ID varchar YES NULL MUL 识别记录唯一标志码
66 it_acs_elevator_record CREATE_TIME bigint YES NULL 创建时间
67 it_acs_elevator_record CREATE_USER_ID varchar YES NULL 创建人
68 it_acs_elevator_record LAST_UPDATE_TIME bigint YES NULL 修改时间
69 it_acs_elevator_record LAST_UPDATE_USER_ID varchar YES NULL 修改人
70 it_acs_elevator_record SRC_FLOOR varchar YES NULL 进梯(当前)楼层
71 it_acs_elevator_record DEST_FLOOR varchar YES NULL 选层楼层
72 it_acs_elevator_record DISPATCH_ELEVATOR_NO varchar YES NULL 派梯梯号
73 it_acs_elevator_record DISPATCH_ELEVATOR_TIME bigint YES NULL 派梯时间
74 it_acs_elevator_record IS_VISITOR varchar YES NULL 是否访客:0-不是,1-是
75 it_acs_elevator_record INTERVIEWEE varchar YES NULL 被访人id
76 it_acs_elevator_record ORG_ID varchar YES NULL 机构id
77 it_acs_elevator_record ORG_NAME varchar YES NULL 机构名
78 it_acs_elevator_record PERSON_CODE varchar YES NULL 工号
79 it_acs_elevator_record_2020 ID varchar NO NULL PRI 主键
80 it_acs_elevator_record_2020 BUSINESS_ID varchar NO NULL MUL 企业ID
81 it_acs_elevator_record_2020 DEVICE_ID varchar YES NULL 设备id
82 it_acs_elevator_record_2020 DEVICE_CODE varchar NO NULL 设备编号
83 it_acs_elevator_record_2020 DEVICE_NAME varchar YES NULL 设备名称
84 it_acs_elevator_record_2020 DEVICE_TYPE_ID varchar YES NULL 设备类型ID
85 it_acs_elevator_record_2020 DEVICE_TYPE_NAME varchar YES NULL 设备类型名称
86 it_acs_elevator_record_2020 DISTRICT_ID varchar YES NULL 省市区id
87 it_acs_elevator_record_2020 AREA_ID varchar YES NULL 设备区位id
88 it_acs_elevator_record_2020 OPEN_DOOR_TYPE varchar NO NULL 开门方式
89 it_acs_elevator_record_2020 OPERATE_NAME varchar YES NULL 操作人员名称
90 it_acs_elevator_record_2020 FACE_IMAGE_PATH varchar YES NULL 抓拍照
91 it_acs_elevator_record_2020 PANORAMA_IMAGE_PATH varchar YES NULL 全景照
92 it_acs_elevator_record_2020 RECORD_RESULT tinyint YES 1 开门结果 1:成功 2:失败
93 it_acs_elevator_record_2020 RECOGNITION_NO varchar YES NULL 识别编号
94 it_acs_elevator_record_2020 RECOGNITION_TIME bigint NO NULL 识别时间
95 it_acs_elevator_record_2020 LOG_ID varchar YES NULL 请求唯一标志码
96 it_acs_elevator_record_2020 RECOGNITION_FACE_ID varchar YES NULL MUL 识别记录唯一标志码
97 it_acs_elevator_record_2020 CREATE_TIME bigint YES NULL 创建时间
98 it_acs_elevator_record_2020 CREATE_USER_ID varchar YES NULL 创建人
99 it_acs_elevator_record_2020 LAST_UPDATE_TIME bigint YES NULL 修改时间
100 it_acs_elevator_record_2020 LAST_UPDATE_USER_ID varchar YES NULL 修改人
101 it_acs_elevator_record_2020 SRC_FLOOR varchar YES NULL 进梯(当前)楼层
102 it_acs_elevator_record_2020 DEST_FLOOR varchar YES NULL 选层楼层
103 it_acs_elevator_record_2020 DISPATCH_ELEVATOR_NO varchar YES NULL 派梯梯号
104 it_acs_elevator_record_2020 DISPATCH_ELEVATOR_TIME bigint YES NULL 派梯时间
105 it_acs_elevator_record_2020 IS_VISITOR varchar YES NULL 是否访客:0-不是,1-是
106 it_acs_elevator_record_2020 INTERVIEWEE varchar YES NULL 被访人id
107 it_acs_elevator_record_2020 ORG_ID varchar YES NULL 机构id
108 it_acs_elevator_record_2020 ORG_NAME varchar YES NULL 机构名
109 it_acs_elevator_record_2020 PERSON_CODE varchar YES NULL 工号
110 it_acs_elevator_record_2021 ID varchar NO NULL PRI 主键
111 it_acs_elevator_record_2021 BUSINESS_ID varchar NO NULL MUL 企业ID
112 it_acs_elevator_record_2021 DEVICE_ID varchar YES NULL 设备id
113 it_acs_elevator_record_2021 DEVICE_CODE varchar NO NULL 设备编号
114 it_acs_elevator_record_2021 DEVICE_NAME varchar YES NULL 设备名称
115 it_acs_elevator_record_2021 DEVICE_TYPE_ID varchar YES NULL 设备类型ID
116 it_acs_elevator_record_2021 DEVICE_TYPE_NAME varchar YES NULL 设备类型名称
117 it_acs_elevator_record_2021 DISTRICT_ID varchar YES NULL 省市区id
118 it_acs_elevator_record_2021 AREA_ID varchar YES NULL 设备区位id
119 it_acs_elevator_record_2021 OPEN_DOOR_TYPE varchar NO NULL 开门方式
120 it_acs_elevator_record_2021 OPERATE_NAME varchar YES NULL 操作人员名称
121 it_acs_elevator_record_2021 FACE_IMAGE_PATH varchar YES NULL 抓拍照
122 it_acs_elevator_record_2021 PANORAMA_IMAGE_PATH varchar YES NULL 全景照
123 it_acs_elevator_record_2021 RECORD_RESULT tinyint YES 1 开门结果 1:成功 2:失败
124 it_acs_elevator_record_2021 RECOGNITION_NO varchar YES NULL 识别编号
125 it_acs_elevator_record_2021 RECOGNITION_TIME bigint NO NULL 识别时间
126 it_acs_elevator_record_2021 LOG_ID varchar YES NULL 请求唯一标志码
127 it_acs_elevator_record_2021 RECOGNITION_FACE_ID varchar YES NULL MUL 识别记录唯一标志码
128 it_acs_elevator_record_2021 CREATE_TIME bigint YES NULL 创建时间
129 it_acs_elevator_record_2021 CREATE_USER_ID varchar YES NULL 创建人
130 it_acs_elevator_record_2021 LAST_UPDATE_TIME bigint YES NULL 修改时间
131 it_acs_elevator_record_2021 LAST_UPDATE_USER_ID varchar YES NULL 修改人
132 it_acs_elevator_record_2021 SRC_FLOOR varchar YES NULL 进梯(当前)楼层
133 it_acs_elevator_record_2021 DEST_FLOOR varchar YES NULL 选层楼层
134 it_acs_elevator_record_2021 DISPATCH_ELEVATOR_NO varchar YES NULL 派梯梯号
135 it_acs_elevator_record_2021 DISPATCH_ELEVATOR_TIME bigint YES NULL 派梯时间
136 it_acs_elevator_record_2021 IS_VISITOR varchar YES NULL 是否访客:0-不是,1-是
137 it_acs_elevator_record_2021 INTERVIEWEE varchar YES NULL 被访人id
138 it_acs_elevator_record_2021 ORG_ID varchar YES NULL 机构id
139 it_acs_elevator_record_2021 ORG_NAME varchar YES NULL 机构名
140 it_acs_elevator_record_2021 PERSON_CODE varchar YES NULL 工号
141 it_acs_elevator_record_2022 ID varchar NO NULL PRI 主键
142 it_acs_elevator_record_2022 BUSINESS_ID varchar NO NULL MUL 企业ID
143 it_acs_elevator_record_2022 DEVICE_ID varchar YES NULL 设备id
144 it_acs_elevator_record_2022 DEVICE_CODE varchar NO NULL 设备编号
145 it_acs_elevator_record_2022 DEVICE_NAME varchar YES NULL 设备名称
146 it_acs_elevator_record_2022 DEVICE_TYPE_ID varchar YES NULL 设备类型ID
147 it_acs_elevator_record_2022 DEVICE_TYPE_NAME varchar YES NULL 设备类型名称
148 it_acs_elevator_record_2022 DISTRICT_ID varchar YES NULL 省市区id
149 it_acs_elevator_record_2022 AREA_ID varchar YES NULL 设备区位id
150 it_acs_elevator_record_2022 OPEN_DOOR_TYPE varchar NO NULL 开门方式
151 it_acs_elevator_record_2022 OPERATE_NAME varchar YES NULL 操作人员名称
152 it_acs_elevator_record_2022 FACE_IMAGE_PATH varchar YES NULL 抓拍照
153 it_acs_elevator_record_2022 PANORAMA_IMAGE_PATH varchar YES NULL 全景照
154 it_acs_elevator_record_2022 RECORD_RESULT tinyint YES 1 开门结果 1:成功 2:失败
155 it_acs_elevator_record_2022 RECOGNITION_NO varchar YES NULL 识别编号
156 it_acs_elevator_record_2022 RECOGNITION_TIME bigint NO NULL 识别时间
157 it_acs_elevator_record_2022 LOG_ID varchar YES NULL 请求唯一标志码
158 it_acs_elevator_record_2022 RECOGNITION_FACE_ID varchar YES NULL MUL 识别记录唯一标志码
159 it_acs_elevator_record_2022 CREATE_TIME bigint YES NULL 创建时间
160 it_acs_elevator_record_2022 CREATE_USER_ID varchar YES NULL 创建人
161 it_acs_elevator_record_2022 LAST_UPDATE_TIME bigint YES NULL 修改时间
162 it_acs_elevator_record_2022 LAST_UPDATE_USER_ID varchar YES NULL 修改人
163 it_acs_elevator_record_2022 SRC_FLOOR varchar YES NULL 进梯(当前)楼层
164 it_acs_elevator_record_2022 DEST_FLOOR varchar YES NULL 选层楼层
165 it_acs_elevator_record_2022 DISPATCH_ELEVATOR_NO varchar YES NULL 派梯梯号
166 it_acs_elevator_record_2022 DISPATCH_ELEVATOR_TIME bigint YES NULL 派梯时间
167 it_acs_elevator_record_2022 IS_VISITOR varchar YES NULL 是否访客:0-不是,1-是
168 it_acs_elevator_record_2022 INTERVIEWEE varchar YES NULL 被访人id
169 it_acs_elevator_record_2022 ORG_ID varchar YES NULL 机构id
170 it_acs_elevator_record_2022 ORG_NAME varchar YES NULL 机构名
171 it_acs_elevator_record_2022 PERSON_CODE varchar YES NULL 工号
172 it_acs_elevator_record_2023 ID varchar NO NULL PRI 主键
173 it_acs_elevator_record_2023 BUSINESS_ID varchar NO NULL 企业ID
174 it_acs_elevator_record_2023 DEVICE_ID varchar YES NULL 设备id
175 it_acs_elevator_record_2023 DEVICE_CODE varchar NO NULL 设备编号
176 it_acs_elevator_record_2023 DEVICE_NAME varchar YES NULL 设备名称
177 it_acs_elevator_record_2023 DEVICE_TYPE_ID varchar YES NULL 设备类型ID
178 it_acs_elevator_record_2023 DEVICE_TYPE_NAME varchar YES NULL 设备类型名称
179 it_acs_elevator_record_2023 DISTRICT_ID varchar YES NULL 省市区id
180 it_acs_elevator_record_2023 AREA_ID varchar YES NULL 设备区位id
181 it_acs_elevator_record_2023 OPEN_DOOR_TYPE varchar NO NULL 开门方式
182 it_acs_elevator_record_2023 OPERATE_NAME varchar YES NULL 操作人员名称
183 it_acs_elevator_record_2023 FACE_IMAGE_PATH varchar YES NULL 抓拍照
184 it_acs_elevator_record_2023 PANORAMA_IMAGE_PATH varchar YES NULL 全景照
185 it_acs_elevator_record_2023 RECORD_RESULT tinyint YES 1 开门结果 1:成功 2:失败
186 it_acs_elevator_record_2023 RECOGNITION_NO varchar YES NULL 识别编号
187 it_acs_elevator_record_2023 RECOGNITION_TIME bigint NO NULL MUL 识别时间
188 it_acs_elevator_record_2023 LOG_ID varchar YES NULL 请求唯一标志码
189 it_acs_elevator_record_2023 RECOGNITION_FACE_ID varchar YES NULL MUL 识别记录唯一标志码
190 it_acs_elevator_record_2023 CREATE_TIME bigint YES NULL 创建时间
191 it_acs_elevator_record_2023 CREATE_USER_ID varchar YES NULL 创建人
192 it_acs_elevator_record_2023 LAST_UPDATE_TIME bigint YES NULL 修改时间
193 it_acs_elevator_record_2023 LAST_UPDATE_USER_ID varchar YES NULL 修改人
194 it_acs_elevator_record_2023 SRC_FLOOR varchar YES NULL 进梯(当前)楼层
195 it_acs_elevator_record_2023 DEST_FLOOR varchar YES NULL 选层楼层
196 it_acs_elevator_record_2023 DISPATCH_ELEVATOR_NO varchar YES NULL 派梯梯号
197 it_acs_elevator_record_2023 DISPATCH_ELEVATOR_TIME bigint YES NULL 派梯时间
198 it_acs_elevator_record_2023 IS_VISITOR varchar YES NULL 是否访客:0-不是,1-是
199 it_acs_elevator_record_2023 INTERVIEWEE varchar YES NULL 被访人id
200 it_acs_elevator_record_2023 ORG_ID varchar YES NULL 机构id
201 it_acs_elevator_record_2023 ORG_NAME varchar YES NULL 机构名
202 it_acs_elevator_record_2023 PERSON_CODE varchar YES NULL 工号
203 it_acs_elevator_record_2024 ID varchar NO NULL PRI 主键
204 it_acs_elevator_record_2024 BUSINESS_ID varchar NO NULL MUL 企业ID
205 it_acs_elevator_record_2024 DEVICE_ID varchar YES NULL 设备id
206 it_acs_elevator_record_2024 DEVICE_CODE varchar NO NULL 设备编号
207 it_acs_elevator_record_2024 DEVICE_NAME varchar YES NULL 设备名称
208 it_acs_elevator_record_2024 DEVICE_TYPE_ID varchar YES NULL 设备类型ID
209 it_acs_elevator_record_2024 DEVICE_TYPE_NAME varchar YES NULL 设备类型名称
210 it_acs_elevator_record_2024 DISTRICT_ID varchar YES NULL 省市区id
211 it_acs_elevator_record_2024 AREA_ID varchar YES NULL 设备区位id
212 it_acs_elevator_record_2024 OPEN_DOOR_TYPE varchar NO NULL 开门方式
213 it_acs_elevator_record_2024 OPERATE_NAME varchar YES NULL 操作人员名称
214 it_acs_elevator_record_2024 FACE_IMAGE_PATH varchar YES NULL 抓拍照
215 it_acs_elevator_record_2024 PANORAMA_IMAGE_PATH varchar YES NULL 全景照
216 it_acs_elevator_record_2024 RECORD_RESULT tinyint YES 1 开门结果 1:成功 2:失败
217 it_acs_elevator_record_2024 RECOGNITION_NO varchar YES NULL 识别编号
218 it_acs_elevator_record_2024 RECOGNITION_TIME bigint NO NULL 识别时间
219 it_acs_elevator_record_2024 LOG_ID varchar YES NULL 请求唯一标志码
220 it_acs_elevator_record_2024 RECOGNITION_FACE_ID varchar YES NULL MUL 识别记录唯一标志码
221 it_acs_elevator_record_2024 CREATE_TIME bigint YES NULL 创建时间
222 it_acs_elevator_record_2024 CREATE_USER_ID varchar YES NULL 创建人
223 it_acs_elevator_record_2024 LAST_UPDATE_TIME bigint YES NULL 修改时间
224 it_acs_elevator_record_2024 LAST_UPDATE_USER_ID varchar YES NULL 修改人
225 it_acs_elevator_record_2024 SRC_FLOOR varchar YES NULL 进梯(当前)楼层
226 it_acs_elevator_record_2024 DEST_FLOOR varchar YES NULL 选层楼层
227 it_acs_elevator_record_2024 DISPATCH_ELEVATOR_NO varchar YES NULL 派梯梯号
228 it_acs_elevator_record_2024 DISPATCH_ELEVATOR_TIME bigint YES NULL 派梯时间
229 it_acs_elevator_record_2024 IS_VISITOR varchar YES NULL 是否访客:0-不是,1-是
230 it_acs_elevator_record_2024 INTERVIEWEE varchar YES NULL 被访人id
231 it_acs_elevator_record_2024 ORG_ID varchar YES NULL 机构id
232 it_acs_elevator_record_2024 ORG_NAME varchar YES NULL 机构名
233 it_acs_elevator_record_2024 PERSON_CODE varchar YES NULL 工号
234 it_acs_elevator_record_2025 ID varchar NO NULL PRI 主键
235 it_acs_elevator_record_2025 BUSINESS_ID varchar NO NULL MUL 企业ID
236 it_acs_elevator_record_2025 DEVICE_ID varchar YES NULL 设备id
237 it_acs_elevator_record_2025 DEVICE_CODE varchar NO NULL 设备编号
238 it_acs_elevator_record_2025 DEVICE_NAME varchar YES NULL 设备名称
239 it_acs_elevator_record_2025 DEVICE_TYPE_ID varchar YES NULL 设备类型ID
240 it_acs_elevator_record_2025 DEVICE_TYPE_NAME varchar YES NULL 设备类型名称
241 it_acs_elevator_record_2025 DISTRICT_ID varchar YES NULL 省市区id
242 it_acs_elevator_record_2025 AREA_ID varchar YES NULL 设备区位id
243 it_acs_elevator_record_2025 OPEN_DOOR_TYPE varchar NO NULL 开门方式
244 it_acs_elevator_record_2025 OPERATE_NAME varchar YES NULL 操作人员名称
245 it_acs_elevator_record_2025 FACE_IMAGE_PATH varchar YES NULL 抓拍照
246 it_acs_elevator_record_2025 PANORAMA_IMAGE_PATH varchar YES NULL 全景照
247 it_acs_elevator_record_2025 RECORD_RESULT tinyint YES 1 开门结果 1:成功 2:失败
248 it_acs_elevator_record_2025 RECOGNITION_NO varchar YES NULL 识别编号
249 it_acs_elevator_record_2025 RECOGNITION_TIME bigint NO NULL 识别时间
250 it_acs_elevator_record_2025 LOG_ID varchar YES NULL 请求唯一标志码
251 it_acs_elevator_record_2025 RECOGNITION_FACE_ID varchar YES NULL MUL 识别记录唯一标志码
252 it_acs_elevator_record_2025 CREATE_TIME bigint YES NULL 创建时间
253 it_acs_elevator_record_2025 CREATE_USER_ID varchar YES NULL 创建人
254 it_acs_elevator_record_2025 LAST_UPDATE_TIME bigint YES NULL 修改时间
255 it_acs_elevator_record_2025 LAST_UPDATE_USER_ID varchar YES NULL 修改人
256 it_acs_elevator_record_2025 SRC_FLOOR varchar YES NULL 进梯(当前)楼层
257 it_acs_elevator_record_2025 DEST_FLOOR varchar YES NULL 选层楼层
258 it_acs_elevator_record_2025 DISPATCH_ELEVATOR_NO varchar YES NULL 派梯梯号
259 it_acs_elevator_record_2025 DISPATCH_ELEVATOR_TIME bigint YES NULL 派梯时间
260 it_acs_elevator_record_2025 IS_VISITOR varchar YES NULL 是否访客:0-不是,1-是
261 it_acs_elevator_record_2025 INTERVIEWEE varchar YES NULL 被访人id
262 it_acs_elevator_record_2025 ORG_ID varchar YES NULL 机构id
263 it_acs_elevator_record_2025 ORG_NAME varchar YES NULL 机构名
264 it_acs_elevator_record_2025 PERSON_CODE varchar YES NULL 工号
265 it_acs_elevator_record_2026 ID varchar NO NULL PRI 主键
266 it_acs_elevator_record_2026 BUSINESS_ID varchar NO NULL MUL 企业ID
267 it_acs_elevator_record_2026 DEVICE_ID varchar YES NULL 设备id
268 it_acs_elevator_record_2026 DEVICE_CODE varchar NO NULL 设备编号
269 it_acs_elevator_record_2026 DEVICE_NAME varchar YES NULL 设备名称
270 it_acs_elevator_record_2026 DEVICE_TYPE_ID varchar YES NULL 设备类型ID
271 it_acs_elevator_record_2026 DEVICE_TYPE_NAME varchar YES NULL 设备类型名称
272 it_acs_elevator_record_2026 DISTRICT_ID varchar YES NULL 省市区id
273 it_acs_elevator_record_2026 AREA_ID varchar YES NULL 设备区位id
274 it_acs_elevator_record_2026 OPEN_DOOR_TYPE varchar NO NULL 开门方式
275 it_acs_elevator_record_2026 OPERATE_NAME varchar YES NULL 操作人员名称
276 it_acs_elevator_record_2026 FACE_IMAGE_PATH varchar YES NULL 抓拍照
277 it_acs_elevator_record_2026 PANORAMA_IMAGE_PATH varchar YES NULL 全景照
278 it_acs_elevator_record_2026 RECORD_RESULT tinyint YES 1 开门结果 1:成功 2:失败
279 it_acs_elevator_record_2026 RECOGNITION_NO varchar YES NULL 识别编号
280 it_acs_elevator_record_2026 RECOGNITION_TIME bigint NO NULL 识别时间
281 it_acs_elevator_record_2026 LOG_ID varchar YES NULL 请求唯一标志码
282 it_acs_elevator_record_2026 RECOGNITION_FACE_ID varchar YES NULL MUL 识别记录唯一标志码
283 it_acs_elevator_record_2026 CREATE_TIME bigint YES NULL 创建时间
284 it_acs_elevator_record_2026 CREATE_USER_ID varchar YES NULL 创建人
285 it_acs_elevator_record_2026 LAST_UPDATE_TIME bigint YES NULL 修改时间
286 it_acs_elevator_record_2026 LAST_UPDATE_USER_ID varchar YES NULL 修改人
287 it_acs_elevator_record_2026 SRC_FLOOR varchar YES NULL 进梯(当前)楼层
288 it_acs_elevator_record_2026 DEST_FLOOR varchar YES NULL 选层楼层
289 it_acs_elevator_record_2026 DISPATCH_ELEVATOR_NO varchar YES NULL 派梯梯号
290 it_acs_elevator_record_2026 DISPATCH_ELEVATOR_TIME bigint YES NULL 派梯时间
291 it_acs_elevator_record_2026 IS_VISITOR varchar YES NULL 是否访客:0-不是,1-是
292 it_acs_elevator_record_2026 INTERVIEWEE varchar YES NULL 被访人id
293 it_acs_elevator_record_2026 ORG_ID varchar YES NULL 机构id
294 it_acs_elevator_record_2026 ORG_NAME varchar YES NULL 机构名
295 it_acs_elevator_record_2026 PERSON_CODE varchar YES NULL 工号
296 it_acs_elevator_record_2027 ID varchar NO NULL PRI 主键
297 it_acs_elevator_record_2027 BUSINESS_ID varchar NO NULL MUL 企业ID
298 it_acs_elevator_record_2027 DEVICE_ID varchar YES NULL 设备id
299 it_acs_elevator_record_2027 DEVICE_CODE varchar NO NULL 设备编号
300 it_acs_elevator_record_2027 DEVICE_NAME varchar YES NULL 设备名称
301 it_acs_elevator_record_2027 DEVICE_TYPE_ID varchar YES NULL 设备类型ID
302 it_acs_elevator_record_2027 DEVICE_TYPE_NAME varchar YES NULL 设备类型名称
303 it_acs_elevator_record_2027 DISTRICT_ID varchar YES NULL 省市区id
304 it_acs_elevator_record_2027 AREA_ID varchar YES NULL 设备区位id
305 it_acs_elevator_record_2027 OPEN_DOOR_TYPE varchar NO NULL 开门方式
306 it_acs_elevator_record_2027 OPERATE_NAME varchar YES NULL 操作人员名称
307 it_acs_elevator_record_2027 FACE_IMAGE_PATH varchar YES NULL 抓拍照
308 it_acs_elevator_record_2027 PANORAMA_IMAGE_PATH varchar YES NULL 全景照
309 it_acs_elevator_record_2027 RECORD_RESULT tinyint YES 1 开门结果 1:成功 2:失败
310 it_acs_elevator_record_2027 RECOGNITION_NO varchar YES NULL 识别编号
311 it_acs_elevator_record_2027 RECOGNITION_TIME bigint NO NULL 识别时间
312 it_acs_elevator_record_2027 LOG_ID varchar YES NULL 请求唯一标志码
313 it_acs_elevator_record_2027 RECOGNITION_FACE_ID varchar YES NULL MUL 识别记录唯一标志码
314 it_acs_elevator_record_2027 CREATE_TIME bigint YES NULL 创建时间
315 it_acs_elevator_record_2027 CREATE_USER_ID varchar YES NULL 创建人
316 it_acs_elevator_record_2027 LAST_UPDATE_TIME bigint YES NULL 修改时间
317 it_acs_elevator_record_2027 LAST_UPDATE_USER_ID varchar YES NULL 修改人
318 it_acs_elevator_record_2027 SRC_FLOOR varchar YES NULL 进梯(当前)楼层
319 it_acs_elevator_record_2027 DEST_FLOOR varchar YES NULL 选层楼层
320 it_acs_elevator_record_2027 DISPATCH_ELEVATOR_NO varchar YES NULL 派梯梯号
321 it_acs_elevator_record_2027 DISPATCH_ELEVATOR_TIME bigint YES NULL 派梯时间
322 it_acs_elevator_record_2027 IS_VISITOR varchar YES NULL 是否访客:0-不是,1-是
323 it_acs_elevator_record_2027 INTERVIEWEE varchar YES NULL 被访人id
324 it_acs_elevator_record_2027 ORG_ID varchar YES NULL 机构id
325 it_acs_elevator_record_2027 ORG_NAME varchar YES NULL 机构名
326 it_acs_elevator_record_2027 PERSON_CODE varchar YES NULL 工号
327 it_acs_elevator_record_2028 ID varchar NO NULL PRI 主键
328 it_acs_elevator_record_2028 BUSINESS_ID varchar NO NULL MUL 企业ID
329 it_acs_elevator_record_2028 DEVICE_ID varchar YES NULL 设备id
330 it_acs_elevator_record_2028 DEVICE_CODE varchar NO NULL 设备编号
331 it_acs_elevator_record_2028 DEVICE_NAME varchar YES NULL 设备名称
332 it_acs_elevator_record_2028 DEVICE_TYPE_ID varchar YES NULL 设备类型ID
333 it_acs_elevator_record_2028 DEVICE_TYPE_NAME varchar YES NULL 设备类型名称
334 it_acs_elevator_record_2028 DISTRICT_ID varchar YES NULL 省市区id
335 it_acs_elevator_record_2028 AREA_ID varchar YES NULL 设备区位id
336 it_acs_elevator_record_2028 OPEN_DOOR_TYPE varchar NO NULL 开门方式
337 it_acs_elevator_record_2028 OPERATE_NAME varchar YES NULL 操作人员名称
338 it_acs_elevator_record_2028 FACE_IMAGE_PATH varchar YES NULL 抓拍照
339 it_acs_elevator_record_2028 PANORAMA_IMAGE_PATH varchar YES NULL 全景照
340 it_acs_elevator_record_2028 RECORD_RESULT tinyint YES 1 开门结果 1:成功 2:失败
341 it_acs_elevator_record_2028 RECOGNITION_NO varchar YES NULL 识别编号
342 it_acs_elevator_record_2028 RECOGNITION_TIME bigint NO NULL 识别时间
343 it_acs_elevator_record_2028 LOG_ID varchar YES NULL 请求唯一标志码
344 it_acs_elevator_record_2028 RECOGNITION_FACE_ID varchar YES NULL MUL 识别记录唯一标志码
345 it_acs_elevator_record_2028 CREATE_TIME bigint YES NULL 创建时间
346 it_acs_elevator_record_2028 CREATE_USER_ID varchar YES NULL 创建人
347 it_acs_elevator_record_2028 LAST_UPDATE_TIME bigint YES NULL 修改时间
348 it_acs_elevator_record_2028 LAST_UPDATE_USER_ID varchar YES NULL 修改人
349 it_acs_elevator_record_2028 SRC_FLOOR varchar YES NULL 进梯(当前)楼层
350 it_acs_elevator_record_2028 DEST_FLOOR varchar YES NULL 选层楼层
351 it_acs_elevator_record_2028 DISPATCH_ELEVATOR_NO varchar YES NULL 派梯梯号
352 it_acs_elevator_record_2028 DISPATCH_ELEVATOR_TIME bigint YES NULL 派梯时间
353 it_acs_elevator_record_2028 IS_VISITOR varchar YES NULL 是否访客:0-不是,1-是
354 it_acs_elevator_record_2028 INTERVIEWEE varchar YES NULL 被访人id
355 it_acs_elevator_record_2028 ORG_ID varchar YES NULL 机构id
356 it_acs_elevator_record_2028 ORG_NAME varchar YES NULL 机构名
357 it_acs_elevator_record_2028 PERSON_CODE varchar YES NULL 工号
358 it_acs_elevator_record_2029 ID varchar NO NULL PRI 主键
359 it_acs_elevator_record_2029 BUSINESS_ID varchar NO NULL MUL 企业ID
360 it_acs_elevator_record_2029 DEVICE_ID varchar YES NULL 设备id
361 it_acs_elevator_record_2029 DEVICE_CODE varchar NO NULL 设备编号
362 it_acs_elevator_record_2029 DEVICE_NAME varchar YES NULL 设备名称
363 it_acs_elevator_record_2029 DEVICE_TYPE_ID varchar YES NULL 设备类型ID
364 it_acs_elevator_record_2029 DEVICE_TYPE_NAME varchar YES NULL 设备类型名称
365 it_acs_elevator_record_2029 DISTRICT_ID varchar YES NULL 省市区id
366 it_acs_elevator_record_2029 AREA_ID varchar YES NULL 设备区位id
367 it_acs_elevator_record_2029 OPEN_DOOR_TYPE varchar NO NULL 开门方式
368 it_acs_elevator_record_2029 OPERATE_NAME varchar YES NULL 操作人员名称
369 it_acs_elevator_record_2029 FACE_IMAGE_PATH varchar YES NULL 抓拍照
370 it_acs_elevator_record_2029 PANORAMA_IMAGE_PATH varchar YES NULL 全景照
371 it_acs_elevator_record_2029 RECORD_RESULT tinyint YES 1 开门结果 1:成功 2:失败
372 it_acs_elevator_record_2029 RECOGNITION_NO varchar YES NULL 识别编号
373 it_acs_elevator_record_2029 RECOGNITION_TIME bigint NO NULL 识别时间
374 it_acs_elevator_record_2029 LOG_ID varchar YES NULL 请求唯一标志码
375 it_acs_elevator_record_2029 RECOGNITION_FACE_ID varchar YES NULL MUL 识别记录唯一标志码
376 it_acs_elevator_record_2029 CREATE_TIME bigint YES NULL 创建时间
377 it_acs_elevator_record_2029 CREATE_USER_ID varchar YES NULL 创建人
378 it_acs_elevator_record_2029 LAST_UPDATE_TIME bigint YES NULL 修改时间
379 it_acs_elevator_record_2029 LAST_UPDATE_USER_ID varchar YES NULL 修改人
380 it_acs_elevator_record_2029 SRC_FLOOR varchar YES NULL 进梯(当前)楼层
381 it_acs_elevator_record_2029 DEST_FLOOR varchar YES NULL 选层楼层
382 it_acs_elevator_record_2029 DISPATCH_ELEVATOR_NO varchar YES NULL 派梯梯号
383 it_acs_elevator_record_2029 DISPATCH_ELEVATOR_TIME bigint YES NULL 派梯时间
384 it_acs_elevator_record_2029 IS_VISITOR varchar YES NULL 是否访客:0-不是,1-是
385 it_acs_elevator_record_2029 INTERVIEWEE varchar YES NULL 被访人id
386 it_acs_elevator_record_2029 ORG_ID varchar YES NULL 机构id
387 it_acs_elevator_record_2029 ORG_NAME varchar YES NULL 机构名
388 it_acs_elevator_record_2029 PERSON_CODE varchar YES NULL 工号
389 it_acs_elevator_record_2030 ID varchar NO NULL PRI 主键
390 it_acs_elevator_record_2030 BUSINESS_ID varchar NO NULL MUL 企业ID
391 it_acs_elevator_record_2030 DEVICE_ID varchar YES NULL 设备id
392 it_acs_elevator_record_2030 DEVICE_CODE varchar NO NULL 设备编号
393 it_acs_elevator_record_2030 DEVICE_NAME varchar YES NULL 设备名称
394 it_acs_elevator_record_2030 DEVICE_TYPE_ID varchar YES NULL 设备类型ID
395 it_acs_elevator_record_2030 DEVICE_TYPE_NAME varchar YES NULL 设备类型名称
396 it_acs_elevator_record_2030 DISTRICT_ID varchar YES NULL 省市区id
397 it_acs_elevator_record_2030 AREA_ID varchar YES NULL 设备区位id
398 it_acs_elevator_record_2030 OPEN_DOOR_TYPE varchar NO NULL 开门方式
399 it_acs_elevator_record_2030 OPERATE_NAME varchar YES NULL 操作人员名称
400 it_acs_elevator_record_2030 FACE_IMAGE_PATH varchar YES NULL 抓拍照
401 it_acs_elevator_record_2030 PANORAMA_IMAGE_PATH varchar YES NULL 全景照
402 it_acs_elevator_record_2030 RECORD_RESULT tinyint YES 1 开门结果 1:成功 2:失败
403 it_acs_elevator_record_2030 RECOGNITION_NO varchar YES NULL 识别编号
404 it_acs_elevator_record_2030 RECOGNITION_TIME bigint NO NULL 识别时间
405 it_acs_elevator_record_2030 LOG_ID varchar YES NULL 请求唯一标志码
406 it_acs_elevator_record_2030 RECOGNITION_FACE_ID varchar YES NULL MUL 识别记录唯一标志码
407 it_acs_elevator_record_2030 CREATE_TIME bigint YES NULL 创建时间
408 it_acs_elevator_record_2030 CREATE_USER_ID varchar YES NULL 创建人
409 it_acs_elevator_record_2030 LAST_UPDATE_TIME bigint YES NULL 修改时间
410 it_acs_elevator_record_2030 LAST_UPDATE_USER_ID varchar YES NULL 修改人
411 it_acs_elevator_record_2030 SRC_FLOOR varchar YES NULL 进梯(当前)楼层
412 it_acs_elevator_record_2030 DEST_FLOOR varchar YES NULL 选层楼层
413 it_acs_elevator_record_2030 DISPATCH_ELEVATOR_NO varchar YES NULL 派梯梯号
414 it_acs_elevator_record_2030 DISPATCH_ELEVATOR_TIME bigint YES NULL 派梯时间
415 it_acs_elevator_record_2030 IS_VISITOR varchar YES NULL 是否访客:0-不是,1-是
416 it_acs_elevator_record_2030 INTERVIEWEE varchar YES NULL 被访人id
417 it_acs_elevator_record_2030 ORG_ID varchar YES NULL 机构id
418 it_acs_elevator_record_2030 ORG_NAME varchar YES NULL 机构名
419 it_acs_elevator_record_2030 PERSON_CODE varchar YES NULL 工号
420 it_acs_pass_rule ID varchar NO NULL PRI 唯一ID
421 it_acs_pass_rule BUSINESS_ID varchar NO NULL MUL 企业ID
422 it_acs_pass_rule ZONE_ID varchar NO NULL 楼层ID
423 it_acs_pass_rule ZONE_NAME varchar YES NULL 楼层名
424 it_acs_pass_rule NAME varchar NO NULL 通行规则名称
425 it_acs_pass_rule IMAGE_STORE_ID varchar NO NULL 图库id
426 it_acs_pass_rule PASSABLE_TIME_ID varchar YES NULL 通行时间id
427 it_acs_pass_rule VALID_DATE_CRON text YES NULL 通行时间cron
428 it_acs_pass_rule VALID_DATE_JSON text YES NULL 通行时间json
429 it_acs_pass_rule BEGIN_DATE bigint YES NULL 开始时间
430 it_acs_pass_rule END_DATE bigint YES NULL 结束时间
431 it_acs_pass_rule CREATE_TIME bigint YES NULL 创建时间
432 it_acs_pass_rule CREATE_USER_ID varchar YES NULL 创建人id
433 it_acs_pass_rule LAST_UPDATE_TIME bigint YES NULL 最后更新时间
434 it_acs_pass_rule LAST_UPDATE_USER_ID varchar YES NULL 最后更新人id
435 it_acs_pass_rule IS_DEFAULT tinyint YES 0 是否默认规则:0-不是,1-是
436 it_acs_recog_record ID varchar NO NULL PRI 主键
437 it_acs_recog_record PERSON_ID varchar YES NULL MUL 人员id
438 it_acs_recog_record PERSON_NAME varchar YES NULL 人员名称
439 it_acs_recog_record BUSINESS_ID varchar NO NULL 企业ID
440 it_acs_recog_record DEVICE_ID varchar YES NULL 设备id
441 it_acs_recog_record DEVICE_CODE varchar NO NULL 设备编号
442 it_acs_recog_record DEVICE_NAME varchar YES NULL 设备名称
443 it_acs_recog_record THRESHOLD decimal YES NULL 阈值
444 it_acs_recog_record DISTRICT_ID varchar YES NULL 省市区id
445 it_acs_recog_record AREA_ID varchar YES NULL 设备区位id
446 it_acs_recog_record DEVICE_TYPE_ID varchar YES NULL 设备类型ID
447 it_acs_recog_record DEVICE_TYPE_NAME varchar YES NULL 设备类型名称
448 it_acs_recog_record SUB_DEVICE_ID varchar YES NULL 子设备id
449 it_acs_recog_record SUB_DEVICE_CODE varchar YES NULL 子设备编号
450 it_acs_recog_record SUB_DEVICE_NAME varchar YES NULL 子设备名称
451 it_acs_recog_record SUB_DEVICE_TYPE_ID varchar YES NULL 子设备类型ID
452 it_acs_recog_record SUB_DEVICE_TYPE_NAME varchar YES NULL 子设备类型名称
453 it_acs_recog_record REGISTER_IMAGE_PATH varchar YES NULL 注册照片
454 it_acs_recog_record FACE_IMAGE_PATH varchar YES NULL 抓拍照
455 it_acs_recog_record PANORAMA_IMAGE_PATH varchar YES NULL 全景照
456 it_acs_recog_record SCORE decimal NO NULL 识别分数
457 it_acs_recog_record RECOGNITION_RESULT tinyint YES NULL 识别结果 1:成功 2:失败
458 it_acs_recog_record RECOGNITION_TIME bigint NO NULL 识别时间
459 it_acs_recog_record GROUP_ID varchar YES NULL 用户所在底库编号
460 it_acs_recog_record FACE_ID varchar NO NULL 识别到对应的注册图片编号
461 it_acs_recog_record QUALITY_SCORE decimal YES NULL 人脸质量总分
462 it_acs_recog_record LOG_ID varchar NO NULL 请求唯一标志码
463 it_acs_recog_record TEMP_SCORE decimal YES NULL 体温
464 it_acs_recog_record MASK_SCORE decimal NO NULL 口罩得分
465 it_acs_recog_record TEMP_THRESHOLD decimal YES NULL 体温阈值
466 it_acs_recog_record CARD_TYPE varchar YES NULL 证件类型
467 it_acs_recog_record SOURCE tinyint YES NULL 来源 1 识别 2 人证
468 it_acs_recog_record TEMP_IMAGE_PATH varchar YES NULL 热像图
469 it_acs_recog_record REMARK varchar YES NULL 备注
470 it_acs_recog_record CREATE_TIME bigint YES NULL 创建时间
471 it_acs_recog_record CREATE_USER_ID varchar YES NULL 创建人
472 it_acs_recog_record LAST_UPDATE_TIME bigint YES NULL 修改时间
473 it_acs_recog_record LAST_UPDATE_USER_ID varchar YES NULL 修改人
474 it_acs_recog_record PERSON_LABEL_IDS text YES NULL 人员id列表
475 it_acs_recog_record_2020 ID varchar NO NULL PRI 主键
476 it_acs_recog_record_2020 PERSON_ID varchar YES NULL 人员id
477 it_acs_recog_record_2020 PERSON_NAME varchar YES NULL 人员名称
478 it_acs_recog_record_2020 BUSINESS_ID varchar NO NULL 企业ID
479 it_acs_recog_record_2020 DEVICE_ID varchar YES NULL 设备id
480 it_acs_recog_record_2020 DEVICE_CODE varchar NO NULL 设备编号
481 it_acs_recog_record_2020 DEVICE_NAME varchar YES NULL 设备名称
482 it_acs_recog_record_2020 THRESHOLD decimal YES NULL 阈值
483 it_acs_recog_record_2020 DISTRICT_ID varchar YES NULL 省市区id
484 it_acs_recog_record_2020 AREA_ID varchar YES NULL 设备区位id
485 it_acs_recog_record_2020 DEVICE_TYPE_ID varchar YES NULL 设备类型ID
486 it_acs_recog_record_2020 DEVICE_TYPE_NAME varchar YES NULL 设备类型名称
487 it_acs_recog_record_2020 SUB_DEVICE_ID varchar YES NULL 子设备id
488 it_acs_recog_record_2020 SUB_DEVICE_CODE varchar YES NULL 子设备编号
489 it_acs_recog_record_2020 SUB_DEVICE_NAME varchar YES NULL 子设备名称
490 it_acs_recog_record_2020 SUB_DEVICE_TYPE_ID varchar YES NULL 子设备类型ID
491 it_acs_recog_record_2020 SUB_DEVICE_TYPE_NAME varchar YES NULL 子设备类型名称
492 it_acs_recog_record_2020 REGISTER_IMAGE_PATH varchar YES NULL 注册照片
493 it_acs_recog_record_2020 FACE_IMAGE_PATH varchar YES NULL 抓拍照
494 it_acs_recog_record_2020 PANORAMA_IMAGE_PATH varchar YES NULL 全景照
495 it_acs_recog_record_2020 SCORE decimal NO NULL 识别分数
496 it_acs_recog_record_2020 RECOGNITION_RESULT tinyint YES NULL 识别结果 1:成功 2:失败
497 it_acs_recog_record_2020 RECOGNITION_TIME bigint NO NULL 识别时间
498 it_acs_recog_record_2020 GROUP_ID varchar YES NULL 用户所在底库编号
499 it_acs_recog_record_2020 FACE_ID varchar NO NULL 识别到对应的注册图片编号
500 it_acs_recog_record_2020 QUALITY_SCORE decimal YES NULL 人脸质量总分
501 it_acs_recog_record_2020 LOG_ID varchar NO NULL 请求唯一标志码
502 it_acs_recog_record_2020 TEMP_SCORE decimal YES NULL 体温
503 it_acs_recog_record_2020 MASK_SCORE decimal NO NULL 口罩得分
504 it_acs_recog_record_2020 TEMP_THRESHOLD decimal YES NULL 体温阈值
505 it_acs_recog_record_2020 CARD_TYPE varchar YES NULL 证件类型
506 it_acs_recog_record_2020 SOURCE tinyint YES NULL 来源 1 识别 2 人证
507 it_acs_recog_record_2020 TEMP_IMAGE_PATH varchar YES NULL 热像图
508 it_acs_recog_record_2020 REMARK varchar YES NULL 备注
509 it_acs_recog_record_2020 CREATE_TIME bigint YES NULL 创建时间
510 it_acs_recog_record_2020 CREATE_USER_ID varchar YES NULL 创建人
511 it_acs_recog_record_2020 LAST_UPDATE_TIME bigint YES NULL 修改时间
512 it_acs_recog_record_2020 LAST_UPDATE_USER_ID varchar YES NULL 修改人
513 it_acs_recog_record_2020 PERSON_LABEL_IDS varchar YES NULL 人员id列表
514 it_acs_recog_record_2021 ID varchar NO NULL PRI 主键
515 it_acs_recog_record_2021 PERSON_ID varchar YES NULL 人员id
516 it_acs_recog_record_2021 PERSON_NAME varchar YES NULL 人员名称
517 it_acs_recog_record_2021 BUSINESS_ID varchar NO NULL 企业ID
518 it_acs_recog_record_2021 DEVICE_ID varchar YES NULL 设备id
519 it_acs_recog_record_2021 DEVICE_CODE varchar NO NULL 设备编号
520 it_acs_recog_record_2021 DEVICE_NAME varchar YES NULL 设备名称
521 it_acs_recog_record_2021 THRESHOLD decimal YES NULL 阈值
522 it_acs_recog_record_2021 DISTRICT_ID varchar YES NULL 省市区id
523 it_acs_recog_record_2021 AREA_ID varchar YES NULL 设备区位id
524 it_acs_recog_record_2021 DEVICE_TYPE_ID varchar YES NULL 设备类型ID
525 it_acs_recog_record_2021 DEVICE_TYPE_NAME varchar YES NULL 设备类型名称
526 it_acs_recog_record_2021 SUB_DEVICE_ID varchar YES NULL 子设备id
527 it_acs_recog_record_2021 SUB_DEVICE_CODE varchar YES NULL 子设备编号
528 it_acs_recog_record_2021 SUB_DEVICE_NAME varchar YES NULL 子设备名称
529 it_acs_recog_record_2021 SUB_DEVICE_TYPE_ID varchar YES NULL 子设备类型ID
530 it_acs_recog_record_2021 SUB_DEVICE_TYPE_NAME varchar YES NULL 子设备类型名称
531 it_acs_recog_record_2021 REGISTER_IMAGE_PATH varchar YES NULL 注册照片
532 it_acs_recog_record_2021 FACE_IMAGE_PATH varchar YES NULL 抓拍照
533 it_acs_recog_record_2021 PANORAMA_IMAGE_PATH varchar YES NULL 全景照
534 it_acs_recog_record_2021 SCORE decimal NO NULL 识别分数
535 it_acs_recog_record_2021 RECOGNITION_RESULT tinyint YES NULL 识别结果 1:成功 2:失败
536 it_acs_recog_record_2021 RECOGNITION_TIME bigint NO NULL 识别时间
537 it_acs_recog_record_2021 GROUP_ID varchar YES NULL 用户所在底库编号
538 it_acs_recog_record_2021 FACE_ID varchar NO NULL 识别到对应的注册图片编号
539 it_acs_recog_record_2021 QUALITY_SCORE decimal YES NULL 人脸质量总分
540 it_acs_recog_record_2021 LOG_ID varchar NO NULL 请求唯一标志码
541 it_acs_recog_record_2021 TEMP_SCORE decimal YES NULL 体温
542 it_acs_recog_record_2021 MASK_SCORE decimal NO NULL 口罩得分
543 it_acs_recog_record_2021 TEMP_THRESHOLD decimal YES NULL 体温阈值
544 it_acs_recog_record_2021 CARD_TYPE varchar YES NULL 证件类型
545 it_acs_recog_record_2021 SOURCE tinyint YES NULL 来源 1 识别 2 人证
546 it_acs_recog_record_2021 TEMP_IMAGE_PATH varchar YES NULL 热像图
547 it_acs_recog_record_2021 REMARK varchar YES NULL 备注
548 it_acs_recog_record_2021 CREATE_TIME bigint YES NULL 创建时间
549 it_acs_recog_record_2021 CREATE_USER_ID varchar YES NULL 创建人
550 it_acs_recog_record_2021 LAST_UPDATE_TIME bigint YES NULL 修改时间
551 it_acs_recog_record_2021 LAST_UPDATE_USER_ID varchar YES NULL 修改人
552 it_acs_recog_record_2021 PERSON_LABEL_IDS varchar YES NULL 人员id列表
553 it_acs_recog_record_2022 ID varchar NO NULL PRI 主键
554 it_acs_recog_record_2022 PERSON_ID varchar YES NULL 人员id
555 it_acs_recog_record_2022 PERSON_NAME varchar YES NULL 人员名称
556 it_acs_recog_record_2022 BUSINESS_ID varchar NO NULL 企业ID
557 it_acs_recog_record_2022 DEVICE_ID varchar YES NULL 设备id
558 it_acs_recog_record_2022 DEVICE_CODE varchar NO NULL 设备编号
559 it_acs_recog_record_2022 DEVICE_NAME varchar YES NULL 设备名称
560 it_acs_recog_record_2022 THRESHOLD decimal YES NULL 阈值
561 it_acs_recog_record_2022 DISTRICT_ID varchar YES NULL 省市区id
562 it_acs_recog_record_2022 AREA_ID varchar YES NULL 设备区位id
563 it_acs_recog_record_2022 DEVICE_TYPE_ID varchar YES NULL 设备类型ID
564 it_acs_recog_record_2022 DEVICE_TYPE_NAME varchar YES NULL 设备类型名称
565 it_acs_recog_record_2022 SUB_DEVICE_ID varchar YES NULL 子设备id
566 it_acs_recog_record_2022 SUB_DEVICE_CODE varchar YES NULL 子设备编号
567 it_acs_recog_record_2022 SUB_DEVICE_NAME varchar YES NULL 子设备名称
568 it_acs_recog_record_2022 SUB_DEVICE_TYPE_ID varchar YES NULL 子设备类型ID
569 it_acs_recog_record_2022 SUB_DEVICE_TYPE_NAME varchar YES NULL 子设备类型名称
570 it_acs_recog_record_2022 REGISTER_IMAGE_PATH varchar YES NULL 注册照片
571 it_acs_recog_record_2022 FACE_IMAGE_PATH varchar YES NULL 抓拍照
572 it_acs_recog_record_2022 PANORAMA_IMAGE_PATH varchar YES NULL 全景照
573 it_acs_recog_record_2022 SCORE decimal NO NULL 识别分数
574 it_acs_recog_record_2022 RECOGNITION_RESULT tinyint YES NULL 识别结果 1:成功 2:失败
575 it_acs_recog_record_2022 RECOGNITION_TIME bigint NO NULL 识别时间
576 it_acs_recog_record_2022 GROUP_ID varchar YES NULL 用户所在底库编号
577 it_acs_recog_record_2022 FACE_ID varchar NO NULL 识别到对应的注册图片编号
578 it_acs_recog_record_2022 QUALITY_SCORE decimal YES NULL 人脸质量总分
579 it_acs_recog_record_2022 LOG_ID varchar NO NULL 请求唯一标志码
580 it_acs_recog_record_2022 TEMP_SCORE decimal YES NULL 体温
581 it_acs_recog_record_2022 MASK_SCORE decimal NO NULL 口罩得分
582 it_acs_recog_record_2022 TEMP_THRESHOLD decimal YES NULL 体温阈值
583 it_acs_recog_record_2022 CARD_TYPE varchar YES NULL 证件类型
584 it_acs_recog_record_2022 SOURCE tinyint YES NULL 来源 1 识别 2 人证
585 it_acs_recog_record_2022 TEMP_IMAGE_PATH varchar YES NULL 热像图
586 it_acs_recog_record_2022 REMARK varchar YES NULL 备注
587 it_acs_recog_record_2022 CREATE_TIME bigint YES NULL 创建时间
588 it_acs_recog_record_2022 CREATE_USER_ID varchar YES NULL 创建人
589 it_acs_recog_record_2022 LAST_UPDATE_TIME bigint YES NULL 修改时间
590 it_acs_recog_record_2022 LAST_UPDATE_USER_ID varchar YES NULL 修改人
591 it_acs_recog_record_2022 PERSON_LABEL_IDS varchar YES NULL 人员id列表
592 it_acs_recog_record_2023 ID varchar NO NULL PRI 主键
593 it_acs_recog_record_2023 PERSON_ID varchar YES NULL 人员id
594 it_acs_recog_record_2023 PERSON_NAME varchar YES NULL 人员名称
595 it_acs_recog_record_2023 BUSINESS_ID varchar NO NULL 企业ID
596 it_acs_recog_record_2023 DEVICE_ID varchar YES NULL 设备id
597 it_acs_recog_record_2023 DEVICE_CODE varchar NO NULL 设备编号
598 it_acs_recog_record_2023 DEVICE_NAME varchar YES NULL 设备名称
599 it_acs_recog_record_2023 THRESHOLD decimal YES NULL 阈值
600 it_acs_recog_record_2023 DISTRICT_ID varchar YES NULL 省市区id
601 it_acs_recog_record_2023 AREA_ID varchar YES NULL 设备区位id
602 it_acs_recog_record_2023 DEVICE_TYPE_ID varchar YES NULL 设备类型ID
603 it_acs_recog_record_2023 DEVICE_TYPE_NAME varchar YES NULL 设备类型名称
604 it_acs_recog_record_2023 SUB_DEVICE_ID varchar YES NULL 子设备id
605 it_acs_recog_record_2023 SUB_DEVICE_CODE varchar YES NULL 子设备编号
606 it_acs_recog_record_2023 SUB_DEVICE_NAME varchar YES NULL 子设备名称
607 it_acs_recog_record_2023 SUB_DEVICE_TYPE_ID varchar YES NULL 子设备类型ID
608 it_acs_recog_record_2023 SUB_DEVICE_TYPE_NAME varchar YES NULL 子设备类型名称
609 it_acs_recog_record_2023 REGISTER_IMAGE_PATH varchar YES NULL 注册照片
610 it_acs_recog_record_2023 FACE_IMAGE_PATH varchar YES NULL 抓拍照
611 it_acs_recog_record_2023 PANORAMA_IMAGE_PATH varchar YES NULL 全景照
612 it_acs_recog_record_2023 SCORE decimal NO NULL 识别分数
613 it_acs_recog_record_2023 RECOGNITION_RESULT tinyint YES NULL 识别结果 1:成功 2:失败
614 it_acs_recog_record_2023 RECOGNITION_TIME bigint NO NULL MUL 识别时间
615 it_acs_recog_record_2023 GROUP_ID varchar YES NULL 用户所在底库编号
616 it_acs_recog_record_2023 FACE_ID varchar NO NULL 识别到对应的注册图片编号
617 it_acs_recog_record_2023 QUALITY_SCORE decimal YES NULL 人脸质量总分
618 it_acs_recog_record_2023 LOG_ID varchar NO NULL 请求唯一标志码
619 it_acs_recog_record_2023 TEMP_SCORE decimal YES NULL 体温
620 it_acs_recog_record_2023 MASK_SCORE decimal NO NULL 口罩得分
621 it_acs_recog_record_2023 TEMP_THRESHOLD decimal YES NULL 体温阈值
622 it_acs_recog_record_2023 CARD_TYPE varchar YES NULL 证件类型
623 it_acs_recog_record_2023 SOURCE tinyint YES NULL 来源 1 识别 2 人证
624 it_acs_recog_record_2023 TEMP_IMAGE_PATH varchar YES NULL 热像图
625 it_acs_recog_record_2023 REMARK varchar YES NULL 备注
626 it_acs_recog_record_2023 CREATE_TIME bigint YES NULL 创建时间
627 it_acs_recog_record_2023 CREATE_USER_ID varchar YES NULL 创建人
628 it_acs_recog_record_2023 LAST_UPDATE_TIME bigint YES NULL 修改时间
629 it_acs_recog_record_2023 LAST_UPDATE_USER_ID varchar YES NULL 修改人
630 it_acs_recog_record_2023 PERSON_LABEL_IDS text YES NULL 人员id列表
631 it_acs_recog_record_2024 ID varchar NO NULL PRI 主键
632 it_acs_recog_record_2024 PERSON_ID varchar YES NULL 人员id
633 it_acs_recog_record_2024 PERSON_NAME varchar YES NULL 人员名称
634 it_acs_recog_record_2024 BUSINESS_ID varchar NO NULL 企业ID
635 it_acs_recog_record_2024 DEVICE_ID varchar YES NULL 设备id
636 it_acs_recog_record_2024 DEVICE_CODE varchar NO NULL 设备编号
637 it_acs_recog_record_2024 DEVICE_NAME varchar YES NULL 设备名称
638 it_acs_recog_record_2024 THRESHOLD decimal YES NULL 阈值
639 it_acs_recog_record_2024 DISTRICT_ID varchar YES NULL 省市区id
640 it_acs_recog_record_2024 AREA_ID varchar YES NULL 设备区位id
641 it_acs_recog_record_2024 DEVICE_TYPE_ID varchar YES NULL 设备类型ID
642 it_acs_recog_record_2024 DEVICE_TYPE_NAME varchar YES NULL 设备类型名称
643 it_acs_recog_record_2024 SUB_DEVICE_ID varchar YES NULL 子设备id
644 it_acs_recog_record_2024 SUB_DEVICE_CODE varchar YES NULL 子设备编号
645 it_acs_recog_record_2024 SUB_DEVICE_NAME varchar YES NULL 子设备名称
646 it_acs_recog_record_2024 SUB_DEVICE_TYPE_ID varchar YES NULL 子设备类型ID
647 it_acs_recog_record_2024 SUB_DEVICE_TYPE_NAME varchar YES NULL 子设备类型名称
648 it_acs_recog_record_2024 REGISTER_IMAGE_PATH varchar YES NULL 注册照片
649 it_acs_recog_record_2024 FACE_IMAGE_PATH varchar YES NULL 抓拍照
650 it_acs_recog_record_2024 PANORAMA_IMAGE_PATH varchar YES NULL 全景照
651 it_acs_recog_record_2024 SCORE decimal NO NULL 识别分数
652 it_acs_recog_record_2024 RECOGNITION_RESULT tinyint YES NULL 识别结果 1:成功 2:失败
653 it_acs_recog_record_2024 RECOGNITION_TIME bigint NO NULL 识别时间
654 it_acs_recog_record_2024 GROUP_ID varchar YES NULL 用户所在底库编号
655 it_acs_recog_record_2024 FACE_ID varchar NO NULL 识别到对应的注册图片编号
656 it_acs_recog_record_2024 QUALITY_SCORE decimal YES NULL 人脸质量总分
657 it_acs_recog_record_2024 LOG_ID varchar NO NULL 请求唯一标志码
658 it_acs_recog_record_2024 TEMP_SCORE decimal YES NULL 体温
659 it_acs_recog_record_2024 MASK_SCORE decimal NO NULL 口罩得分
660 it_acs_recog_record_2024 TEMP_THRESHOLD decimal YES NULL 体温阈值
661 it_acs_recog_record_2024 CARD_TYPE varchar YES NULL 证件类型
662 it_acs_recog_record_2024 SOURCE tinyint YES NULL 来源 1 识别 2 人证
663 it_acs_recog_record_2024 TEMP_IMAGE_PATH varchar YES NULL 热像图
664 it_acs_recog_record_2024 REMARK varchar YES NULL 备注
665 it_acs_recog_record_2024 CREATE_TIME bigint YES NULL 创建时间
666 it_acs_recog_record_2024 CREATE_USER_ID varchar YES NULL 创建人
667 it_acs_recog_record_2024 LAST_UPDATE_TIME bigint YES NULL 修改时间
668 it_acs_recog_record_2024 LAST_UPDATE_USER_ID varchar YES NULL 修改人
669 it_acs_recog_record_2024 PERSON_LABEL_IDS text YES NULL 人员id列表
670 it_acs_recog_record_2025 ID varchar NO NULL PRI 主键
671 it_acs_recog_record_2025 PERSON_ID varchar YES NULL 人员id
672 it_acs_recog_record_2025 PERSON_NAME varchar YES NULL 人员名称
673 it_acs_recog_record_2025 BUSINESS_ID varchar NO NULL 企业ID
674 it_acs_recog_record_2025 DEVICE_ID varchar YES NULL 设备id
675 it_acs_recog_record_2025 DEVICE_CODE varchar NO NULL 设备编号
676 it_acs_recog_record_2025 DEVICE_NAME varchar YES NULL 设备名称
677 it_acs_recog_record_2025 THRESHOLD decimal YES NULL 阈值
678 it_acs_recog_record_2025 DISTRICT_ID varchar YES NULL 省市区id
679 it_acs_recog_record_2025 AREA_ID varchar YES NULL 设备区位id
680 it_acs_recog_record_2025 DEVICE_TYPE_ID varchar YES NULL 设备类型ID
681 it_acs_recog_record_2025 DEVICE_TYPE_NAME varchar YES NULL 设备类型名称
682 it_acs_recog_record_2025 SUB_DEVICE_ID varchar YES NULL 子设备id
683 it_acs_recog_record_2025 SUB_DEVICE_CODE varchar YES NULL 子设备编号
684 it_acs_recog_record_2025 SUB_DEVICE_NAME varchar YES NULL 子设备名称
685 it_acs_recog_record_2025 SUB_DEVICE_TYPE_ID varchar YES NULL 子设备类型ID
686 it_acs_recog_record_2025 SUB_DEVICE_TYPE_NAME varchar YES NULL 子设备类型名称
687 it_acs_recog_record_2025 REGISTER_IMAGE_PATH varchar YES NULL 注册照片
688 it_acs_recog_record_2025 FACE_IMAGE_PATH varchar YES NULL 抓拍照
689 it_acs_recog_record_2025 PANORAMA_IMAGE_PATH varchar YES NULL 全景照
690 it_acs_recog_record_2025 SCORE decimal NO NULL 识别分数
691 it_acs_recog_record_2025 RECOGNITION_RESULT tinyint YES NULL 识别结果 1:成功 2:失败
692 it_acs_recog_record_2025 RECOGNITION_TIME bigint NO NULL 识别时间
693 it_acs_recog_record_2025 GROUP_ID varchar YES NULL 用户所在底库编号
694 it_acs_recog_record_2025 FACE_ID varchar NO NULL 识别到对应的注册图片编号
695 it_acs_recog_record_2025 QUALITY_SCORE decimal YES NULL 人脸质量总分
696 it_acs_recog_record_2025 LOG_ID varchar NO NULL 请求唯一标志码
697 it_acs_recog_record_2025 TEMP_SCORE decimal YES NULL 体温
698 it_acs_recog_record_2025 MASK_SCORE decimal NO NULL 口罩得分
699 it_acs_recog_record_2025 TEMP_THRESHOLD decimal YES NULL 体温阈值
700 it_acs_recog_record_2025 CARD_TYPE varchar YES NULL 证件类型
701 it_acs_recog_record_2025 SOURCE tinyint YES NULL 来源 1 识别 2 人证
702 it_acs_recog_record_2025 TEMP_IMAGE_PATH varchar YES NULL 热像图
703 it_acs_recog_record_2025 REMARK varchar YES NULL 备注
704 it_acs_recog_record_2025 CREATE_TIME bigint YES NULL 创建时间
705 it_acs_recog_record_2025 CREATE_USER_ID varchar YES NULL 创建人
706 it_acs_recog_record_2025 LAST_UPDATE_TIME bigint YES NULL 修改时间
707 it_acs_recog_record_2025 LAST_UPDATE_USER_ID varchar YES NULL 修改人
708 it_acs_recog_record_2025 PERSON_LABEL_IDS text YES NULL 人员id列表
709 it_acs_recog_record_2026 ID varchar NO NULL PRI 主键
710 it_acs_recog_record_2026 PERSON_ID varchar YES NULL 人员id
711 it_acs_recog_record_2026 PERSON_NAME varchar YES NULL 人员名称
712 it_acs_recog_record_2026 BUSINESS_ID varchar NO NULL 企业ID
713 it_acs_recog_record_2026 DEVICE_ID varchar YES NULL 设备id
714 it_acs_recog_record_2026 DEVICE_CODE varchar NO NULL 设备编号
715 it_acs_recog_record_2026 DEVICE_NAME varchar YES NULL 设备名称
716 it_acs_recog_record_2026 THRESHOLD decimal YES NULL 阈值
717 it_acs_recog_record_2026 DISTRICT_ID varchar YES NULL 省市区id
718 it_acs_recog_record_2026 AREA_ID varchar YES NULL 设备区位id
719 it_acs_recog_record_2026 DEVICE_TYPE_ID varchar YES NULL 设备类型ID
720 it_acs_recog_record_2026 DEVICE_TYPE_NAME varchar YES NULL 设备类型名称
721 it_acs_recog_record_2026 SUB_DEVICE_ID varchar YES NULL 子设备id
722 it_acs_recog_record_2026 SUB_DEVICE_CODE varchar YES NULL 子设备编号
723 it_acs_recog_record_2026 SUB_DEVICE_NAME varchar YES NULL 子设备名称
724 it_acs_recog_record_2026 SUB_DEVICE_TYPE_ID varchar YES NULL 子设备类型ID
725 it_acs_recog_record_2026 SUB_DEVICE_TYPE_NAME varchar YES NULL 子设备类型名称
726 it_acs_recog_record_2026 REGISTER_IMAGE_PATH varchar YES NULL 注册照片
727 it_acs_recog_record_2026 FACE_IMAGE_PATH varchar YES NULL 抓拍照
728 it_acs_recog_record_2026 PANORAMA_IMAGE_PATH varchar YES NULL 全景照
729 it_acs_recog_record_2026 SCORE decimal NO NULL 识别分数
730 it_acs_recog_record_2026 RECOGNITION_RESULT tinyint YES NULL 识别结果 1:成功 2:失败
731 it_acs_recog_record_2026 RECOGNITION_TIME bigint NO NULL 识别时间
732 it_acs_recog_record_2026 GROUP_ID varchar YES NULL 用户所在底库编号
733 it_acs_recog_record_2026 FACE_ID varchar NO NULL 识别到对应的注册图片编号
734 it_acs_recog_record_2026 QUALITY_SCORE decimal YES NULL 人脸质量总分
735 it_acs_recog_record_2026 LOG_ID varchar NO NULL 请求唯一标志码
736 it_acs_recog_record_2026 TEMP_SCORE decimal YES NULL 体温
737 it_acs_recog_record_2026 MASK_SCORE decimal NO NULL 口罩得分
738 it_acs_recog_record_2026 TEMP_THRESHOLD decimal YES NULL 体温阈值
739 it_acs_recog_record_2026 CARD_TYPE varchar YES NULL 证件类型
740 it_acs_recog_record_2026 SOURCE tinyint YES NULL 来源 1 识别 2 人证
741 it_acs_recog_record_2026 TEMP_IMAGE_PATH varchar YES NULL 热像图
742 it_acs_recog_record_2026 REMARK varchar YES NULL 备注
743 it_acs_recog_record_2026 CREATE_TIME bigint YES NULL 创建时间
744 it_acs_recog_record_2026 CREATE_USER_ID varchar YES NULL 创建人
745 it_acs_recog_record_2026 LAST_UPDATE_TIME bigint YES NULL 修改时间
746 it_acs_recog_record_2026 LAST_UPDATE_USER_ID varchar YES NULL 修改人
747 it_acs_recog_record_2026 PERSON_LABEL_IDS varchar YES NULL 人员id列表
748 it_acs_recog_record_2027 ID varchar NO NULL PRI 主键
749 it_acs_recog_record_2027 PERSON_ID varchar YES NULL 人员id
750 it_acs_recog_record_2027 PERSON_NAME varchar YES NULL 人员名称
751 it_acs_recog_record_2027 BUSINESS_ID varchar NO NULL 企业ID
752 it_acs_recog_record_2027 DEVICE_ID varchar YES NULL 设备id
753 it_acs_recog_record_2027 DEVICE_CODE varchar NO NULL 设备编号
754 it_acs_recog_record_2027 DEVICE_NAME varchar YES NULL 设备名称
755 it_acs_recog_record_2027 THRESHOLD decimal YES NULL 阈值
756 it_acs_recog_record_2027 DISTRICT_ID varchar YES NULL 省市区id
757 it_acs_recog_record_2027 AREA_ID varchar YES NULL 设备区位id
758 it_acs_recog_record_2027 DEVICE_TYPE_ID varchar YES NULL 设备类型ID
759 it_acs_recog_record_2027 DEVICE_TYPE_NAME varchar YES NULL 设备类型名称
760 it_acs_recog_record_2027 SUB_DEVICE_ID varchar YES NULL 子设备id
761 it_acs_recog_record_2027 SUB_DEVICE_CODE varchar YES NULL 子设备编号
762 it_acs_recog_record_2027 SUB_DEVICE_NAME varchar YES NULL 子设备名称
763 it_acs_recog_record_2027 SUB_DEVICE_TYPE_ID varchar YES NULL 子设备类型ID
764 it_acs_recog_record_2027 SUB_DEVICE_TYPE_NAME varchar YES NULL 子设备类型名称
765 it_acs_recog_record_2027 REGISTER_IMAGE_PATH varchar YES NULL 注册照片
766 it_acs_recog_record_2027 FACE_IMAGE_PATH varchar YES NULL 抓拍照
767 it_acs_recog_record_2027 PANORAMA_IMAGE_PATH varchar YES NULL 全景照
768 it_acs_recog_record_2027 SCORE decimal NO NULL 识别分数
769 it_acs_recog_record_2027 RECOGNITION_RESULT tinyint YES NULL 识别结果 1:成功 2:失败
770 it_acs_recog_record_2027 RECOGNITION_TIME bigint NO NULL 识别时间
771 it_acs_recog_record_2027 GROUP_ID varchar YES NULL 用户所在底库编号
772 it_acs_recog_record_2027 FACE_ID varchar NO NULL 识别到对应的注册图片编号
773 it_acs_recog_record_2027 QUALITY_SCORE decimal YES NULL 人脸质量总分
774 it_acs_recog_record_2027 LOG_ID varchar NO NULL 请求唯一标志码
775 it_acs_recog_record_2027 TEMP_SCORE decimal YES NULL 体温
776 it_acs_recog_record_2027 MASK_SCORE decimal NO NULL 口罩得分
777 it_acs_recog_record_2027 TEMP_THRESHOLD decimal YES NULL 体温阈值
778 it_acs_recog_record_2027 CARD_TYPE varchar YES NULL 证件类型
779 it_acs_recog_record_2027 SOURCE tinyint YES NULL 来源 1 识别 2 人证
780 it_acs_recog_record_2027 TEMP_IMAGE_PATH varchar YES NULL 热像图
781 it_acs_recog_record_2027 REMARK varchar YES NULL 备注
782 it_acs_recog_record_2027 CREATE_TIME bigint YES NULL 创建时间
783 it_acs_recog_record_2027 CREATE_USER_ID varchar YES NULL 创建人
784 it_acs_recog_record_2027 LAST_UPDATE_TIME bigint YES NULL 修改时间
785 it_acs_recog_record_2027 LAST_UPDATE_USER_ID varchar YES NULL 修改人
786 it_acs_recog_record_2027 PERSON_LABEL_IDS varchar YES NULL 人员id列表
787 it_acs_recog_record_2028 ID varchar NO NULL PRI 主键
788 it_acs_recog_record_2028 PERSON_ID varchar YES NULL 人员id
789 it_acs_recog_record_2028 PERSON_NAME varchar YES NULL 人员名称
790 it_acs_recog_record_2028 BUSINESS_ID varchar NO NULL 企业ID
791 it_acs_recog_record_2028 DEVICE_ID varchar YES NULL 设备id
792 it_acs_recog_record_2028 DEVICE_CODE varchar NO NULL 设备编号
793 it_acs_recog_record_2028 DEVICE_NAME varchar YES NULL 设备名称
794 it_acs_recog_record_2028 THRESHOLD decimal YES NULL 阈值
795 it_acs_recog_record_2028 DISTRICT_ID varchar YES NULL 省市区id
796 it_acs_recog_record_2028 AREA_ID varchar YES NULL 设备区位id
797 it_acs_recog_record_2028 DEVICE_TYPE_ID varchar YES NULL 设备类型ID
798 it_acs_recog_record_2028 DEVICE_TYPE_NAME varchar YES NULL 设备类型名称
799 it_acs_recog_record_2028 SUB_DEVICE_ID varchar YES NULL 子设备id
800 it_acs_recog_record_2028 SUB_DEVICE_CODE varchar YES NULL 子设备编号
801 it_acs_recog_record_2028 SUB_DEVICE_NAME varchar YES NULL 子设备名称
802 it_acs_recog_record_2028 SUB_DEVICE_TYPE_ID varchar YES NULL 子设备类型ID
803 it_acs_recog_record_2028 SUB_DEVICE_TYPE_NAME varchar YES NULL 子设备类型名称
804 it_acs_recog_record_2028 REGISTER_IMAGE_PATH varchar YES NULL 注册照片
805 it_acs_recog_record_2028 FACE_IMAGE_PATH varchar YES NULL 抓拍照
806 it_acs_recog_record_2028 PANORAMA_IMAGE_PATH varchar YES NULL 全景照
807 it_acs_recog_record_2028 SCORE decimal NO NULL 识别分数
808 it_acs_recog_record_2028 RECOGNITION_RESULT tinyint YES NULL 识别结果 1:成功 2:失败
809 it_acs_recog_record_2028 RECOGNITION_TIME bigint NO NULL 识别时间
810 it_acs_recog_record_2028 GROUP_ID varchar YES NULL 用户所在底库编号
811 it_acs_recog_record_2028 FACE_ID varchar NO NULL 识别到对应的注册图片编号
812 it_acs_recog_record_2028 QUALITY_SCORE decimal YES NULL 人脸质量总分
813 it_acs_recog_record_2028 LOG_ID varchar NO NULL 请求唯一标志码
814 it_acs_recog_record_2028 TEMP_SCORE decimal YES NULL 体温
815 it_acs_recog_record_2028 MASK_SCORE decimal NO NULL 口罩得分
816 it_acs_recog_record_2028 TEMP_THRESHOLD decimal YES NULL 体温阈值
817 it_acs_recog_record_2028 CARD_TYPE varchar YES NULL 证件类型
818 it_acs_recog_record_2028 SOURCE tinyint YES NULL 来源 1 识别 2 人证
819 it_acs_recog_record_2028 TEMP_IMAGE_PATH varchar YES NULL 热像图
820 it_acs_recog_record_2028 REMARK varchar YES NULL 备注
821 it_acs_recog_record_2028 CREATE_TIME bigint YES NULL 创建时间
822 it_acs_recog_record_2028 CREATE_USER_ID varchar YES NULL 创建人
823 it_acs_recog_record_2028 LAST_UPDATE_TIME bigint YES NULL 修改时间
824 it_acs_recog_record_2028 LAST_UPDATE_USER_ID varchar YES NULL 修改人
825 it_acs_recog_record_2028 PERSON_LABEL_IDS varchar YES NULL 人员id列表
826 it_acs_recog_record_2029 ID varchar NO NULL PRI 主键
827 it_acs_recog_record_2029 PERSON_ID varchar YES NULL 人员id
828 it_acs_recog_record_2029 PERSON_NAME varchar YES NULL 人员名称
829 it_acs_recog_record_2029 BUSINESS_ID varchar NO NULL 企业ID
830 it_acs_recog_record_2029 DEVICE_ID varchar YES NULL 设备id
831 it_acs_recog_record_2029 DEVICE_CODE varchar NO NULL 设备编号
832 it_acs_recog_record_2029 DEVICE_NAME varchar YES NULL 设备名称
833 it_acs_recog_record_2029 THRESHOLD decimal YES NULL 阈值
834 it_acs_recog_record_2029 DISTRICT_ID varchar YES NULL 省市区id
835 it_acs_recog_record_2029 AREA_ID varchar YES NULL 设备区位id
836 it_acs_recog_record_2029 DEVICE_TYPE_ID varchar YES NULL 设备类型ID
837 it_acs_recog_record_2029 DEVICE_TYPE_NAME varchar YES NULL 设备类型名称
838 it_acs_recog_record_2029 SUB_DEVICE_ID varchar YES NULL 子设备id
839 it_acs_recog_record_2029 SUB_DEVICE_CODE varchar YES NULL 子设备编号
840 it_acs_recog_record_2029 SUB_DEVICE_NAME varchar YES NULL 子设备名称
841 it_acs_recog_record_2029 SUB_DEVICE_TYPE_ID varchar YES NULL 子设备类型ID
842 it_acs_recog_record_2029 SUB_DEVICE_TYPE_NAME varchar YES NULL 子设备类型名称
843 it_acs_recog_record_2029 REGISTER_IMAGE_PATH varchar YES NULL 注册照片
844 it_acs_recog_record_2029 FACE_IMAGE_PATH varchar YES NULL 抓拍照
845 it_acs_recog_record_2029 PANORAMA_IMAGE_PATH varchar YES NULL 全景照
846 it_acs_recog_record_2029 SCORE decimal NO NULL 识别分数
847 it_acs_recog_record_2029 RECOGNITION_RESULT tinyint YES NULL 识别结果 1:成功 2:失败
848 it_acs_recog_record_2029 RECOGNITION_TIME bigint NO NULL 识别时间
849 it_acs_recog_record_2029 GROUP_ID varchar YES NULL 用户所在底库编号
850 it_acs_recog_record_2029 FACE_ID varchar NO NULL 识别到对应的注册图片编号
851 it_acs_recog_record_2029 QUALITY_SCORE decimal YES NULL 人脸质量总分
852 it_acs_recog_record_2029 LOG_ID varchar NO NULL 请求唯一标志码
853 it_acs_recog_record_2029 TEMP_SCORE decimal YES NULL 体温
854 it_acs_recog_record_2029 MASK_SCORE decimal NO NULL 口罩得分
855 it_acs_recog_record_2029 TEMP_THRESHOLD decimal YES NULL 体温阈值
856 it_acs_recog_record_2029 CARD_TYPE varchar YES NULL 证件类型
857 it_acs_recog_record_2029 SOURCE tinyint YES NULL 来源 1 识别 2 人证
858 it_acs_recog_record_2029 TEMP_IMAGE_PATH varchar YES NULL 热像图
859 it_acs_recog_record_2029 REMARK varchar YES NULL 备注
860 it_acs_recog_record_2029 CREATE_TIME bigint YES NULL 创建时间
861 it_acs_recog_record_2029 CREATE_USER_ID varchar YES NULL 创建人
862 it_acs_recog_record_2029 LAST_UPDATE_TIME bigint YES NULL 修改时间
863 it_acs_recog_record_2029 LAST_UPDATE_USER_ID varchar YES NULL 修改人
864 it_acs_recog_record_2029 PERSON_LABEL_IDS varchar YES NULL 人员id列表
865 it_acs_recog_record_2030 ID varchar NO NULL PRI 主键
866 it_acs_recog_record_2030 PERSON_ID varchar YES NULL 人员id
867 it_acs_recog_record_2030 PERSON_NAME varchar YES NULL 人员名称
868 it_acs_recog_record_2030 BUSINESS_ID varchar NO NULL 企业ID
869 it_acs_recog_record_2030 DEVICE_ID varchar YES NULL 设备id
870 it_acs_recog_record_2030 DEVICE_CODE varchar NO NULL 设备编号
871 it_acs_recog_record_2030 DEVICE_NAME varchar YES NULL 设备名称
872 it_acs_recog_record_2030 THRESHOLD decimal YES NULL 阈值
873 it_acs_recog_record_2030 DISTRICT_ID varchar YES NULL 省市区id
874 it_acs_recog_record_2030 AREA_ID varchar YES NULL 设备区位id
875 it_acs_recog_record_2030 DEVICE_TYPE_ID varchar YES NULL 设备类型ID
876 it_acs_recog_record_2030 DEVICE_TYPE_NAME varchar YES NULL 设备类型名称
877 it_acs_recog_record_2030 SUB_DEVICE_ID varchar YES NULL 子设备id
878 it_acs_recog_record_2030 SUB_DEVICE_CODE varchar YES NULL 子设备编号
879 it_acs_recog_record_2030 SUB_DEVICE_NAME varchar YES NULL 子设备名称
880 it_acs_recog_record_2030 SUB_DEVICE_TYPE_ID varchar YES NULL 子设备类型ID
881 it_acs_recog_record_2030 SUB_DEVICE_TYPE_NAME varchar YES NULL 子设备类型名称
882 it_acs_recog_record_2030 REGISTER_IMAGE_PATH varchar YES NULL 注册照片
883 it_acs_recog_record_2030 FACE_IMAGE_PATH varchar YES NULL 抓拍照
884 it_acs_recog_record_2030 PANORAMA_IMAGE_PATH varchar YES NULL 全景照
885 it_acs_recog_record_2030 SCORE decimal NO NULL 识别分数
886 it_acs_recog_record_2030 RECOGNITION_RESULT tinyint YES NULL 识别结果 1:成功 2:失败
887 it_acs_recog_record_2030 RECOGNITION_TIME bigint NO NULL 识别时间
888 it_acs_recog_record_2030 GROUP_ID varchar YES NULL 用户所在底库编号
889 it_acs_recog_record_2030 FACE_ID varchar NO NULL 识别到对应的注册图片编号
890 it_acs_recog_record_2030 QUALITY_SCORE decimal YES NULL 人脸质量总分
891 it_acs_recog_record_2030 LOG_ID varchar NO NULL 请求唯一标志码
892 it_acs_recog_record_2030 TEMP_SCORE decimal YES NULL 体温
893 it_acs_recog_record_2030 MASK_SCORE decimal NO NULL 口罩得分
894 it_acs_recog_record_2030 TEMP_THRESHOLD decimal YES NULL 体温阈值
895 it_acs_recog_record_2030 CARD_TYPE varchar YES NULL 证件类型
896 it_acs_recog_record_2030 SOURCE tinyint YES NULL 来源 1 识别 2 人证
897 it_acs_recog_record_2030 TEMP_IMAGE_PATH varchar YES NULL 热像图
898 it_acs_recog_record_2030 REMARK varchar YES NULL 备注
899 it_acs_recog_record_2030 CREATE_TIME bigint YES NULL 创建时间
900 it_acs_recog_record_2030 CREATE_USER_ID varchar YES NULL 创建人
901 it_acs_recog_record_2030 LAST_UPDATE_TIME bigint YES NULL 修改时间
902 it_acs_recog_record_2030 LAST_UPDATE_USER_ID varchar YES NULL 修改人
903 it_acs_recog_record_2030 PERSON_LABEL_IDS varchar YES NULL 人员id列表
904 send_record_time time bigint NO NULL 时间戳
905 send_record_time type tinyint NO NULL 类型:1-通行记录,2-开门记录
906 send_record_timebak time bigint NO NULL 时间戳
907 send_record_timebak type tinyint NO NULL 类型:1-通行记录,2-开门记录
908 tenant_visitor_floor_policy id varchar NO NULL PRI 主键
909 tenant_visitor_floor_policy business_id varchar NO NULL MUL 机构/租户 ID
910 tenant_visitor_floor_policy policy_type varchar NO INTERSECT_ALLOWLIST 策略类型
911 tenant_visitor_floor_policy allow_zone_ids text YES NULL JSON 数组,zoneId 列表
912 tenant_visitor_floor_policy building_id varchar YES NULL 预留:楼栋维度;租户默认填 NULL
913 tenant_visitor_floor_policy enabled tinyint NO 1 1 启用 0 停用
914 tenant_visitor_floor_policy policy_version bigint NO 1 配置版本号
915 tenant_visitor_floor_policy remark varchar YES NULL
916 tenant_visitor_floor_policy created_by varchar YES NULL
917 tenant_visitor_floor_policy created_at bigint YES NULL
918 tenant_visitor_floor_policy updated_by varchar YES NULL
919 tenant_visitor_floor_policy updated_at bigint YES NULL
@@ -0,0 +1,82 @@
mysql: [Warning] Using a password on the command line interface can be insecure.
elevator_device PRIMARY ID 0 1
image_rule_ref image_rule_ref_include_labels_IDX include_labels 1 1
image_rule_ref image_rule_ref_include_organizations_IDX include_organizations 1 1
image_rule_ref PRIMARY id 0 1
it_acs_device_task PRIMARY id 0 1
it_acs_elevator_record IDX_BUSINESS_RECOGTIME BUSINESS_ID 1 1
it_acs_elevator_record IDX_BUSINESS_RECOGTIME RECOGNITION_TIME 1 2
it_acs_elevator_record PRIMARY ID 0 1
it_acs_elevator_record RECOGNITION_FACE_ID RECOGNITION_FACE_ID 1 1
it_acs_elevator_record_2020 IDX_BUSINESS_RECOGTIME BUSINESS_ID 1 1
it_acs_elevator_record_2020 IDX_BUSINESS_RECOGTIME RECOGNITION_TIME 1 2
it_acs_elevator_record_2020 PRIMARY ID 0 1
it_acs_elevator_record_2020 RECOGNITION_FACE_ID RECOGNITION_FACE_ID 1 1
it_acs_elevator_record_2021 IDX_BUSINESS_RECOGTIME BUSINESS_ID 1 1
it_acs_elevator_record_2021 IDX_BUSINESS_RECOGTIME RECOGNITION_TIME 1 2
it_acs_elevator_record_2021 PRIMARY ID 0 1
it_acs_elevator_record_2021 RECOGNITION_FACE_ID RECOGNITION_FACE_ID 1 1
it_acs_elevator_record_2022 IDX_BUSINESS_RECOGTIME BUSINESS_ID 1 1
it_acs_elevator_record_2022 IDX_BUSINESS_RECOGTIME RECOGNITION_TIME 1 2
it_acs_elevator_record_2022 PRIMARY ID 0 1
it_acs_elevator_record_2022 RECOGNITION_FACE_ID RECOGNITION_FACE_ID 1 1
it_acs_elevator_record_2023 it_acs_elevator_record_2023_RECOGNITION_TIME_IDX RECOGNITION_TIME 1 1
it_acs_elevator_record_2023 PRIMARY ID 0 1
it_acs_elevator_record_2023 RECOGNITION_FACE_ID RECOGNITION_FACE_ID 1 1
it_acs_elevator_record_2024 IDX_BUSINESS_RECOGTIME BUSINESS_ID 1 1
it_acs_elevator_record_2024 IDX_BUSINESS_RECOGTIME RECOGNITION_TIME 1 2
it_acs_elevator_record_2024 PRIMARY ID 0 1
it_acs_elevator_record_2024 RECOGNITION_FACE_ID RECOGNITION_FACE_ID 1 1
it_acs_elevator_record_2025 IDX_BUSINESS_RECOGTIME BUSINESS_ID 1 1
it_acs_elevator_record_2025 IDX_BUSINESS_RECOGTIME RECOGNITION_TIME 1 2
it_acs_elevator_record_2025 PRIMARY ID 0 1
it_acs_elevator_record_2025 RECOGNITION_FACE_ID RECOGNITION_FACE_ID 1 1
it_acs_elevator_record_2026 IDX_BUSINESS_RECOGTIME BUSINESS_ID 1 1
it_acs_elevator_record_2026 IDX_BUSINESS_RECOGTIME RECOGNITION_TIME 1 2
it_acs_elevator_record_2026 PRIMARY ID 0 1
it_acs_elevator_record_2026 RECOGNITION_FACE_ID RECOGNITION_FACE_ID 1 1
it_acs_elevator_record_2027 IDX_BUSINESS_RECOGTIME BUSINESS_ID 1 1
it_acs_elevator_record_2027 IDX_BUSINESS_RECOGTIME RECOGNITION_TIME 1 2
it_acs_elevator_record_2027 PRIMARY ID 0 1
it_acs_elevator_record_2027 RECOGNITION_FACE_ID RECOGNITION_FACE_ID 1 1
it_acs_elevator_record_2028 IDX_BUSINESS_RECOGTIME BUSINESS_ID 1 1
it_acs_elevator_record_2028 IDX_BUSINESS_RECOGTIME RECOGNITION_TIME 1 2
it_acs_elevator_record_2028 PRIMARY ID 0 1
it_acs_elevator_record_2028 RECOGNITION_FACE_ID RECOGNITION_FACE_ID 1 1
it_acs_elevator_record_2029 IDX_BUSINESS_RECOGTIME BUSINESS_ID 1 1
it_acs_elevator_record_2029 IDX_BUSINESS_RECOGTIME RECOGNITION_TIME 1 2
it_acs_elevator_record_2029 PRIMARY ID 0 1
it_acs_elevator_record_2029 RECOGNITION_FACE_ID RECOGNITION_FACE_ID 1 1
it_acs_elevator_record_2030 IDX_BUSINESS_RECOGTIME BUSINESS_ID 1 1
it_acs_elevator_record_2030 IDX_BUSINESS_RECOGTIME RECOGNITION_TIME 1 2
it_acs_elevator_record_2030 PRIMARY ID 0 1
it_acs_elevator_record_2030 RECOGNITION_FACE_ID RECOGNITION_FACE_ID 1 1
it_acs_pass_rule IDX_BUSINESS_DEVICE BUSINESS_ID 1 1
it_acs_pass_rule IDX_BUSINESS_DEVICE ZONE_ID 1 2
it_acs_pass_rule IDX_BUSINESS_IMG_STORE BUSINESS_ID 1 1
it_acs_pass_rule IDX_BUSINESS_IMG_STORE IMAGE_STORE_ID 1 2
it_acs_pass_rule IDX_BUSINESS_TIME BUSINESS_ID 1 1
it_acs_pass_rule IDX_BUSINESS_TIME PASSABLE_TIME_ID 1 2
it_acs_pass_rule PRIMARY ID 0 1
it_acs_recog_record it_acs_recog_record_PERSON_ID_IDX PERSON_ID 1 1
it_acs_recog_record it_acs_recog_record_PERSON_ID_IDX DEVICE_ID 1 2
it_acs_recog_record it_acs_recog_record_PERSON_ID_IDX RECOGNITION_TIME 1 3
it_acs_recog_record it_acs_recog_record_PERSON_ID_IDX RECOGNITION_RESULT 1 4
it_acs_recog_record PRIMARY ID 0 1
it_acs_recog_record_2020 PRIMARY ID 0 1
it_acs_recog_record_2021 PRIMARY ID 0 1
it_acs_recog_record_2022 PRIMARY ID 0 1
it_acs_recog_record_2023 it_acs_recog_record_2023_RECOGNITION_TIME_IDX RECOGNITION_TIME 1 1
it_acs_recog_record_2023 PRIMARY ID 0 1
it_acs_recog_record_2024 PRIMARY ID 0 1
it_acs_recog_record_2025 PRIMARY ID 0 1
it_acs_recog_record_2026 PRIMARY ID 0 1
it_acs_recog_record_2027 PRIMARY ID 0 1
it_acs_recog_record_2028 PRIMARY ID 0 1
it_acs_recog_record_2029 PRIMARY ID 0 1
it_acs_recog_record_2030 PRIMARY ID 0 1
tenant_visitor_floor_policy idx_business_enabled business_id 1 1
tenant_visitor_floor_policy idx_business_enabled enabled 1 2
tenant_visitor_floor_policy PRIMARY id 0 1
tenant_visitor_floor_policy uk_biz_building business_id 0 1
tenant_visitor_floor_policy uk_biz_building building_id 0 2
1 mysql: [Warning] Using a password on the command line interface can be insecure.
2 elevator_device PRIMARY ID 0 1
3 image_rule_ref image_rule_ref_include_labels_IDX include_labels 1 1
4 image_rule_ref image_rule_ref_include_organizations_IDX include_organizations 1 1
5 image_rule_ref PRIMARY id 0 1
6 it_acs_device_task PRIMARY id 0 1
7 it_acs_elevator_record IDX_BUSINESS_RECOGTIME BUSINESS_ID 1 1
8 it_acs_elevator_record IDX_BUSINESS_RECOGTIME RECOGNITION_TIME 1 2
9 it_acs_elevator_record PRIMARY ID 0 1
10 it_acs_elevator_record RECOGNITION_FACE_ID RECOGNITION_FACE_ID 1 1
11 it_acs_elevator_record_2020 IDX_BUSINESS_RECOGTIME BUSINESS_ID 1 1
12 it_acs_elevator_record_2020 IDX_BUSINESS_RECOGTIME RECOGNITION_TIME 1 2
13 it_acs_elevator_record_2020 PRIMARY ID 0 1
14 it_acs_elevator_record_2020 RECOGNITION_FACE_ID RECOGNITION_FACE_ID 1 1
15 it_acs_elevator_record_2021 IDX_BUSINESS_RECOGTIME BUSINESS_ID 1 1
16 it_acs_elevator_record_2021 IDX_BUSINESS_RECOGTIME RECOGNITION_TIME 1 2
17 it_acs_elevator_record_2021 PRIMARY ID 0 1
18 it_acs_elevator_record_2021 RECOGNITION_FACE_ID RECOGNITION_FACE_ID 1 1
19 it_acs_elevator_record_2022 IDX_BUSINESS_RECOGTIME BUSINESS_ID 1 1
20 it_acs_elevator_record_2022 IDX_BUSINESS_RECOGTIME RECOGNITION_TIME 1 2
21 it_acs_elevator_record_2022 PRIMARY ID 0 1
22 it_acs_elevator_record_2022 RECOGNITION_FACE_ID RECOGNITION_FACE_ID 1 1
23 it_acs_elevator_record_2023 it_acs_elevator_record_2023_RECOGNITION_TIME_IDX RECOGNITION_TIME 1 1
24 it_acs_elevator_record_2023 PRIMARY ID 0 1
25 it_acs_elevator_record_2023 RECOGNITION_FACE_ID RECOGNITION_FACE_ID 1 1
26 it_acs_elevator_record_2024 IDX_BUSINESS_RECOGTIME BUSINESS_ID 1 1
27 it_acs_elevator_record_2024 IDX_BUSINESS_RECOGTIME RECOGNITION_TIME 1 2
28 it_acs_elevator_record_2024 PRIMARY ID 0 1
29 it_acs_elevator_record_2024 RECOGNITION_FACE_ID RECOGNITION_FACE_ID 1 1
30 it_acs_elevator_record_2025 IDX_BUSINESS_RECOGTIME BUSINESS_ID 1 1
31 it_acs_elevator_record_2025 IDX_BUSINESS_RECOGTIME RECOGNITION_TIME 1 2
32 it_acs_elevator_record_2025 PRIMARY ID 0 1
33 it_acs_elevator_record_2025 RECOGNITION_FACE_ID RECOGNITION_FACE_ID 1 1
34 it_acs_elevator_record_2026 IDX_BUSINESS_RECOGTIME BUSINESS_ID 1 1
35 it_acs_elevator_record_2026 IDX_BUSINESS_RECOGTIME RECOGNITION_TIME 1 2
36 it_acs_elevator_record_2026 PRIMARY ID 0 1
37 it_acs_elevator_record_2026 RECOGNITION_FACE_ID RECOGNITION_FACE_ID 1 1
38 it_acs_elevator_record_2027 IDX_BUSINESS_RECOGTIME BUSINESS_ID 1 1
39 it_acs_elevator_record_2027 IDX_BUSINESS_RECOGTIME RECOGNITION_TIME 1 2
40 it_acs_elevator_record_2027 PRIMARY ID 0 1
41 it_acs_elevator_record_2027 RECOGNITION_FACE_ID RECOGNITION_FACE_ID 1 1
42 it_acs_elevator_record_2028 IDX_BUSINESS_RECOGTIME BUSINESS_ID 1 1
43 it_acs_elevator_record_2028 IDX_BUSINESS_RECOGTIME RECOGNITION_TIME 1 2
44 it_acs_elevator_record_2028 PRIMARY ID 0 1
45 it_acs_elevator_record_2028 RECOGNITION_FACE_ID RECOGNITION_FACE_ID 1 1
46 it_acs_elevator_record_2029 IDX_BUSINESS_RECOGTIME BUSINESS_ID 1 1
47 it_acs_elevator_record_2029 IDX_BUSINESS_RECOGTIME RECOGNITION_TIME 1 2
48 it_acs_elevator_record_2029 PRIMARY ID 0 1
49 it_acs_elevator_record_2029 RECOGNITION_FACE_ID RECOGNITION_FACE_ID 1 1
50 it_acs_elevator_record_2030 IDX_BUSINESS_RECOGTIME BUSINESS_ID 1 1
51 it_acs_elevator_record_2030 IDX_BUSINESS_RECOGTIME RECOGNITION_TIME 1 2
52 it_acs_elevator_record_2030 PRIMARY ID 0 1
53 it_acs_elevator_record_2030 RECOGNITION_FACE_ID RECOGNITION_FACE_ID 1 1
54 it_acs_pass_rule IDX_BUSINESS_DEVICE BUSINESS_ID 1 1
55 it_acs_pass_rule IDX_BUSINESS_DEVICE ZONE_ID 1 2
56 it_acs_pass_rule IDX_BUSINESS_IMG_STORE BUSINESS_ID 1 1
57 it_acs_pass_rule IDX_BUSINESS_IMG_STORE IMAGE_STORE_ID 1 2
58 it_acs_pass_rule IDX_BUSINESS_TIME BUSINESS_ID 1 1
59 it_acs_pass_rule IDX_BUSINESS_TIME PASSABLE_TIME_ID 1 2
60 it_acs_pass_rule PRIMARY ID 0 1
61 it_acs_recog_record it_acs_recog_record_PERSON_ID_IDX PERSON_ID 1 1
62 it_acs_recog_record it_acs_recog_record_PERSON_ID_IDX DEVICE_ID 1 2
63 it_acs_recog_record it_acs_recog_record_PERSON_ID_IDX RECOGNITION_TIME 1 3
64 it_acs_recog_record it_acs_recog_record_PERSON_ID_IDX RECOGNITION_RESULT 1 4
65 it_acs_recog_record PRIMARY ID 0 1
66 it_acs_recog_record_2020 PRIMARY ID 0 1
67 it_acs_recog_record_2021 PRIMARY ID 0 1
68 it_acs_recog_record_2022 PRIMARY ID 0 1
69 it_acs_recog_record_2023 it_acs_recog_record_2023_RECOGNITION_TIME_IDX RECOGNITION_TIME 1 1
70 it_acs_recog_record_2023 PRIMARY ID 0 1
71 it_acs_recog_record_2024 PRIMARY ID 0 1
72 it_acs_recog_record_2025 PRIMARY ID 0 1
73 it_acs_recog_record_2026 PRIMARY ID 0 1
74 it_acs_recog_record_2027 PRIMARY ID 0 1
75 it_acs_recog_record_2028 PRIMARY ID 0 1
76 it_acs_recog_record_2029 PRIMARY ID 0 1
77 it_acs_recog_record_2030 PRIMARY ID 0 1
78 tenant_visitor_floor_policy idx_business_enabled business_id 1 1
79 tenant_visitor_floor_policy idx_business_enabled enabled 1 2
80 tenant_visitor_floor_policy PRIMARY id 0 1
81 tenant_visitor_floor_policy uk_biz_building business_id 0 1
82 tenant_visitor_floor_policy uk_biz_building building_id 0 2
@@ -0,0 +1,51 @@
=== tenant_visitor_floor_policy ===
+----------------------------------+----------------------------------+---------------------+------------------------+-------------+---------+----------------+--------------------------------------------------------------------------------------------------------------------------+------------+---------------+------------+---------------+
| id | business_id | policy_type | allow_zone_ids | building_id | enabled | policy_version | remark | created_by | created_at | updated_by | updated_at |
+----------------------------------+----------------------------------+---------------------+------------------------+-------------+---------+----------------+--------------------------------------------------------------------------------------------------------------------------+------------+---------------+------------+---------------+
| gf_vstr_policy_guangfa_fund_001x | 2524639890ba4f2cba9ba1a4eeaa4015 | INTERSECT_ALLOWLIST | ["605560545117995008"] | NULL | 1 | 1 | 广发基金:访客与 floorList 求交后仅保留 allowlist(默认仅 28F zone)。业务配置见产品方案。 | NULL | 1777437481000 | NULL | 1777437481000 |
+----------------------------------+----------------------------------+---------------------+------------------------+-------------+---------+----------------+--------------------------------------------------------------------------------------------------------------------------+------------+---------------+------------+---------------+
=== image_rule_ref ===
+--------------------+--------------------+-----------+--------------+--------------------+----------------+-----------------------+----------------+------------+------------+----------+---------------+------------------+----------------------------------+--------------------+---------------+
| id | zone_id | zone_name | name | person_id | include_labels | include_organizations | exclude_labels | is_default | start_time | end_time | create_time | last_update_time | business_id | parent_rule | person_delete |
+--------------------+--------------------+-----------+--------------+--------------------+----------------+-----------------------+----------------+------------+------------+----------+---------------+------------------+----------------------------------+--------------------+---------------+
| 999998333961596928 | 605560541473144832 | 6F | 默认规则 | 999998332677980160 | NULL | NULL | NULL | NULL | NULL | NULL | 1753154181887 | 1753154181887 | 2524639890ba4f2cba9ba1a4eeaa4015 | 606253695058837504 | 0 |
| 999998241204416512 | 605560542752407552 | 15F | 默认规则 | 999998240135180288 | NULL | NULL | NULL | NULL | NULL | NULL | 1753154159772 | 1753154159772 | 2524639890ba4f2cba9ba1a4eeaa4015 | 605594273001242624 | 0 |
| 999997067843825664 | 605560543834537984 | 20F | 默认规则 | 999997066723823616 | NULL | NULL | NULL | NULL | NULL | NULL | 1753153880021 | 1753153880021 | 2524639890ba4f2cba9ba1a4eeaa4015 | 605786764719685632 | 0 |
+--------------------+--------------------+-----------+--------------+--------------------+----------------+-----------------------+----------------+------------+------------+----------+---------------+------------------+----------------------------------+--------------------+---------------+
=== code_elevator_area ===
+--------------------+------+---------------+------------------+----------+--------------------+
| zone_id | code | create_time | last_update_time | is_first | parent_id |
+--------------------+------+---------------+------------------+----------+--------------------+
| 605560548330831872 | 0x2F | 1659120800248 | 1659120800248 | 0 | 605560539791228928 |
| 605560548167254016 | 0x2E | 1659120788063 | 1659120788063 | 0 | 605560539791228928 |
| 605560547923984384 | 0x2D | 1659120766841 | 1659120766841 | 0 | 605560539791228928 |
+--------------------+------+---------------+------------------+----------+--------------------+
=== elevator_device ===
+-----+---------------+------------------+-------------+----------------------------------+--------------------------+------------------+------------------------------------------+--------+-----------+---------------------+------------------+--------------------+---------------+----------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------+--------------------+
| ID | create_time | last_update_time | delete_flag | device_id | device_name | device_code | device_type_name | status | area_name | current_building_id | current_building | current_floor_id | current_floor | elevator_floor_list | elevator_floor_id_list | business_id | area_id |
+-----+---------------+------------------+-------------+----------------------------------+--------------------------+------------------+------------------------------------------+--------+-----------+---------------------+------------------+--------------------+---------------+----------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------+--------------------+
| 985 | 1767517871574 | 1770433604213 | 1 | 5f670e84771547bba65eb612f1eae85c | 28F办公电梯厅东 | 0166124040000056 | 云从-人脸识别终端CW-IS1330系列 | NULL | 28F | 605560539791228928 | 星河湾中心 | 605560545117995008 | 28F | 1F,30F,31F,32F,33F,34F,35F,36F,37F,38F | 605560545449345024,605560545596145664,605560545738752000,605560545893941248,605560546036547584,605560546242068480,605560546401452032,605560546552446976,605560546711830528,605560540432957440 | 2524639890ba4f2cba9ba1a4eeaa4015 | 605560545117995008 |
| 983 | 1766567284252 | 1766567284252 | 1 | dd16a57af07a4466a37fa863ece02d52 | 30F办公电梯厅东新 | 0166124040000034 | 云从-人脸识别终端CW-IS1330系列 | NULL | 30F | 605560539791228928 | 星河湾中心 | 605560545449345024 | 30F | 1F,28F,31F,32F,33F,34F,35F,36F,37F,38F | 605560545117995008,605560545596145664,605560545738752000,605560545893941248,605560546036547584,605560546242068480,605560546401452032,605560546552446976,605560546711830528,605560540432957440 | 2524639890ba4f2cba9ba1a4eeaa4015 | 605560545449345024 |
| 981 | 1765949061198 | 1765949061198 | 1 | 78df9e4433294dff975f743e8e8cd801 | 35F办公电梯厅东 | 0166124040000033 | 云从-人脸识别终端CW-IS1330系列 | NULL | 35F | 605560539791228928 | 星河湾中心 | 605560546242068480 | 35F | 1F,28F,30F,31F,32F,33F,34F,36F,37F,38F | 605560540432957440,605560545117995008,605560545449345024,605560545596145664,605560545738752000,605560545893941248,605560546036547584,605560546401452032,605560546552446976,605560546711830528 | 2524639890ba4f2cba9ba1a4eeaa4015 | 605560546242068480 |
+-----+---------------+------------------+-------------+----------------------------------+--------------------------+------------------+------------------------------------------+--------+-----------+---------------------+------------------+--------------------+---------------+----------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------+--------------------+
=== it_acs_device_task ===
+--------------------+-------------+--------------+---------+
| id | ALL_DEVICES | BIND_DEVICES | IS_STOP |
+--------------------+-------------+--------------+---------+
| 995659162337738752 | 1 | 0 | 1 |
| 992730189924626432 | 1 | 0 | 1 |
| 992730084085411840 | 1 | 1 | 1 |
+--------------------+-------------+--------------+---------+
=== send_record_time ===
+---------------+------+
| time | type |
+---------------+------+
| 1776933769715 | 2 |
| 1687645800000 | 1 |
+---------------+------+
=== device_image_store ===
+--------------------+----------------------------------+
| building_id | image_store_id |
+--------------------+----------------------------------+
| 605560539791228928 | 7a83a5d268844c3a9ea0b22b32f8757b |
+--------------------+----------------------------------+
@@ -0,0 +1,34 @@
mysql: [Warning] Using a password on the command line interface can be insecure.
code_elevator_area 43 InnoDB 电梯编码(编码与地区编号)
device_image_store 0 InnoDB 楼栋图库关联表
elevator_device 126 InnoDB 派梯设备
image_rule_ref 69087 InnoDB 通行规则信息表
it_acs_device_task 525 InnoDB 派梯楼层绑定任务进度表
it_acs_elevator_record 0 InnoDB 开门记录表
it_acs_elevator_record_2020 0 InnoDB 开门记录表
it_acs_elevator_record_2021 0 InnoDB 开门记录表
it_acs_elevator_record_2022 364141 InnoDB 开门记录表
it_acs_elevator_record_2023 1295207 InnoDB 开门记录表
it_acs_elevator_record_2024 1859518 InnoDB 开门记录表
it_acs_elevator_record_2025 1847669 InnoDB 开门记录表
it_acs_elevator_record_2026 664815 InnoDB 开门记录表
it_acs_elevator_record_2027 0 InnoDB 开门记录表
it_acs_elevator_record_2028 0 InnoDB 开门记录表
it_acs_elevator_record_2029 0 InnoDB 开门记录表
it_acs_elevator_record_2030 0 InnoDB 开门记录表
it_acs_pass_rule 0 InnoDB 通行规则表
it_acs_recog_record 0 InnoDB 识别记录表
it_acs_recog_record_2020 0 InnoDB 识别记录表
it_acs_recog_record_2021 0 InnoDB 识别记录表
it_acs_recog_record_2022 735055 InnoDB 识别记录表
it_acs_recog_record_2023 5751205 InnoDB 识别记录表
it_acs_recog_record_2024 4046343 InnoDB 识别记录表
it_acs_recog_record_2025 3503798 InnoDB 识别记录表
it_acs_recog_record_2026 976180 InnoDB 识别记录表
it_acs_recog_record_2027 0 InnoDB 识别记录表
it_acs_recog_record_2028 0 InnoDB 识别记录表
it_acs_recog_record_2029 0 InnoDB 识别记录表
it_acs_recog_record_2030 0 InnoDB 识别记录表
send_record_time 2 InnoDB 记录推送时间戳
send_record_timebak 2 InnoDB 记录推送时间戳
tenant_visitor_floor_policy 1 InnoDB 租户访客默认楼层策略(与组织 floorList 求交)
1 mysql: [Warning] Using a password on the command line interface can be insecure.
2 code_elevator_area 43 InnoDB 电梯编码(编码与地区编号)
3 device_image_store 0 InnoDB 楼栋图库关联表
4 elevator_device 126 InnoDB 派梯设备
5 image_rule_ref 69087 InnoDB 通行规则信息表
6 it_acs_device_task 525 InnoDB 派梯楼层绑定任务进度表
7 it_acs_elevator_record 0 InnoDB 开门记录表
8 it_acs_elevator_record_2020 0 InnoDB 开门记录表
9 it_acs_elevator_record_2021 0 InnoDB 开门记录表
10 it_acs_elevator_record_2022 364141 InnoDB 开门记录表
11 it_acs_elevator_record_2023 1295207 InnoDB 开门记录表
12 it_acs_elevator_record_2024 1859518 InnoDB 开门记录表
13 it_acs_elevator_record_2025 1847669 InnoDB 开门记录表
14 it_acs_elevator_record_2026 664815 InnoDB 开门记录表
15 it_acs_elevator_record_2027 0 InnoDB 开门记录表
16 it_acs_elevator_record_2028 0 InnoDB 开门记录表
17 it_acs_elevator_record_2029 0 InnoDB 开门记录表
18 it_acs_elevator_record_2030 0 InnoDB 开门记录表
19 it_acs_pass_rule 0 InnoDB 通行规则表
20 it_acs_recog_record 0 InnoDB 识别记录表
21 it_acs_recog_record_2020 0 InnoDB 识别记录表
22 it_acs_recog_record_2021 0 InnoDB 识别记录表
23 it_acs_recog_record_2022 735055 InnoDB 识别记录表
24 it_acs_recog_record_2023 5751205 InnoDB 识别记录表
25 it_acs_recog_record_2024 4046343 InnoDB 识别记录表
26 it_acs_recog_record_2025 3503798 InnoDB 识别记录表
27 it_acs_recog_record_2026 976180 InnoDB 识别记录表
28 it_acs_recog_record_2027 0 InnoDB 识别记录表
29 it_acs_recog_record_2028 0 InnoDB 识别记录表
30 it_acs_recog_record_2029 0 InnoDB 识别记录表
31 it_acs_recog_record_2030 0 InnoDB 识别记录表
32 send_record_time 2 InnoDB 记录推送时间戳
33 send_record_timebak 2 InnoDB 记录推送时间戳
34 tenant_visitor_floor_policy 1 InnoDB 租户访客默认楼层策略(与组织 floorList 求交)
@@ -0,0 +1,27 @@
./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/mysql/api/ApiMapper.xml
./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/mysql/application/AppApiMapper.xml
./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/mysql/application/AppBusinessMapper.xml
./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/mysql/application/ApplicationApiMapper.xml
./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/mysql/application/ApplicationMapper.xml
./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/mysql/application/AppResMapper.xml
./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/mysql/authorization/AuthApiMapper.xml
./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/mysql/authorization/AuthorizationMapper.xml
./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/mysql/authorization/AuthResourceMapper.xml
./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/mysql/dict/DictMapper.xml
./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/mysql/dict/DictTypeMapper.xml
./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/mysql/enterprise/EnterpriseMapper.xml
./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/mysql/group/GroupInfoMapper.xml
./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/mysql/group/GroupRoleMapper.xml
./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/mysql/resource/ResourceApiMapper.xml
./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/mysql/resource/ResourceMapper.xml
./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/mysql/role/RoleApiMapper.xml
./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/mysql/role/RoleAuthMapper.xml
./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/mysql/role/RoleMapper.xml
./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/mysql/role/RoleResourceMapper.xml
./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/mysql/service/ServiceMapper.xml
./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/mysql/user/UserAccountMapper.xml
./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/mysql/user/UserApplicationMapper.xml
./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/mysql/user/UserGroupMapper.xml
./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/mysql/user/UserMapper.xml
./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/mysql/user/UserResMapper.xml
./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/mysql/user/UserRoleMapper.xml
+89
View File
@@ -0,0 +1,89 @@
./maven-cw-elevator-application/cw-elevator-application-data/src/main/java/cn/cloudwalk/elevator/codeElevatorArea/mapper/AcsElevatorCodeMapper.xml
./maven-cw-elevator-application/cw-elevator-application-data/src/main/java/cn/cloudwalk/elevator/device/mapper/AcsDeviceTaskMapper.xml
./maven-cw-elevator-application/cw-elevator-application-data/src/main/java/cn/cloudwalk/elevator/device/mapper/AcsElevatorDeviceMapper.xml
./maven-cw-elevator-application/cw-elevator-application-data/src/main/java/cn/cloudwalk/elevator/device/mapper/DeviceImageStoreMapper.xml
./maven-cw-elevator-application/cw-elevator-application-data/src/main/java/cn/cloudwalk/elevator/person/mapper/TenantVisitorFloorPolicyMapper.xml
./maven-cw-elevator-application/cw-elevator-application-data/src/main/java/cn/cloudwalk/elevator/record/mapper/AcsElevatorRecordMapper.xml
./maven-cw-elevator-application/cw-elevator-application-data/src/main/java/cn/cloudwalk/elevator/record/mapper/AcsPassRuleMapper.xml
./maven-cw-elevator-application/cw-elevator-application-data/src/main/java/cn/cloudwalk/elevator/record/mapper/AcsRecogRecordMapper.xml
./maven-cw-elevator-application/cw-elevator-application-data/src/main/java/cn/cloudwalk/elevator/record/mapper/ImageRuleRefMapper.xml
./maven-cw-elevator-application/cw-elevator-application-data/src/main/java/cn/cloudwalk/elevator/record/mapper/SendRecordTimeMapper.xml
./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/db2/api/ApiMapper.xml
./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/db2/application/AppApiMapper.xml
./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/db2/application/ApplicationApiMapper.xml
./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/db2/application/ApplicationMapper.xml
./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/db2/application/AppResMapper.xml
./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/db2/authorization/AuthApiMapper.xml
./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/db2/authorization/AuthorizationMapper.xml
./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/db2/authorization/AuthResourceMapper.xml
./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/db2/dict/DictMapper.xml
./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/db2/dict/DictTypeMapper.xml
./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/db2/enterprise/EnterpriseMapper.xml
./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/db2/group/GroupInfoMapper.xml
./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/db2/group/GroupRoleMapper.xml
./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/db2/resource/ResourceApiMapper.xml
./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/db2/resource/ResourceMapper.xml
./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/db2/role/RoleApiMapper.xml
./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/db2/role/RoleAuthMapper.xml
./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/db2/role/RoleMapper.xml
./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/db2/role/RoleResourceMapper.xml
./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/db2/service/ServiceMapper.xml
./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/db2/user/UserAccountMapper.xml
./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/db2/user/UserApplicationMapper.xml
./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/db2/user/UserGroupMapper.xml
./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/db2/user/UserMapper.xml
./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/db2/user/UserResMapper.xml
./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/db2/user/UserRoleMapper.xml
./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/mysql/api/ApiMapper.xml
./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/mysql/application/AppApiMapper.xml
./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/mysql/application/AppBusinessMapper.xml
./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/mysql/application/ApplicationApiMapper.xml
./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/mysql/application/ApplicationMapper.xml
./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/mysql/application/AppResMapper.xml
./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/mysql/authorization/AuthApiMapper.xml
./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/mysql/authorization/AuthorizationMapper.xml
./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/mysql/authorization/AuthResourceMapper.xml
./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/mysql/dict/DictMapper.xml
./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/mysql/dict/DictTypeMapper.xml
./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/mysql/enterprise/EnterpriseMapper.xml
./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/mysql/group/GroupInfoMapper.xml
./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/mysql/group/GroupRoleMapper.xml
./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/mysql/resource/ResourceApiMapper.xml
./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/mysql/resource/ResourceMapper.xml
./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/mysql/role/RoleApiMapper.xml
./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/mysql/role/RoleAuthMapper.xml
./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/mysql/role/RoleMapper.xml
./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/mysql/role/RoleResourceMapper.xml
./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/mysql/service/ServiceMapper.xml
./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/mysql/user/UserAccountMapper.xml
./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/mysql/user/UserApplicationMapper.xml
./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/mysql/user/UserGroupMapper.xml
./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/mysql/user/UserMapper.xml
./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/mysql/user/UserResMapper.xml
./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/mysql/user/UserRoleMapper.xml
./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/oracle/api/ApiMapper.xml
./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/oracle/application/AppApiMapper.xml
./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/oracle/application/ApplicationApiMapper.xml
./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/oracle/application/ApplicationMapper.xml
./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/oracle/application/AppResMapper.xml
./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/oracle/authorization/AuthApiMapper.xml
./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/oracle/authorization/AuthorizationMapper.xml
./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/oracle/authorization/AuthResourceMapper.xml
./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/oracle/dict/DictMapper.xml
./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/oracle/dict/DictTypeMapper.xml
./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/oracle/enterprise/EnterpriseMapper.xml
./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/oracle/group/GroupInfoMapper.xml
./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/oracle/group/GroupRoleMapper.xml
./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/oracle/resource/ResourceApiMapper.xml
./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/oracle/resource/ResourceMapper.xml
./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/oracle/role/RoleApiMapper.xml
./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/oracle/role/RoleAuthMapper.xml
./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/oracle/role/RoleMapper.xml
./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/oracle/role/RoleResourceMapper.xml
./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/oracle/service/ServiceMapper.xml
./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/oracle/user/UserAccountMapper.xml
./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/oracle/user/UserApplicationMapper.xml
./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/oracle/user/UserGroupMapper.xml
./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/oracle/user/UserMapper.xml
./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/oracle/user/UserResMapper.xml
./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/oracle/user/UserRoleMapper.xml
+89
View File
@@ -0,0 +1,89 @@
maven-cw-elevator-application ./maven-cw-elevator-application/cw-elevator-application-data/src/main/java/cn/cloudwalk/elevator/codeElevatorArea/mapper/AcsElevatorCodeMapper.xml
maven-cw-elevator-application ./maven-cw-elevator-application/cw-elevator-application-data/src/main/java/cn/cloudwalk/elevator/device/mapper/AcsDeviceTaskMapper.xml
maven-cw-elevator-application ./maven-cw-elevator-application/cw-elevator-application-data/src/main/java/cn/cloudwalk/elevator/device/mapper/AcsElevatorDeviceMapper.xml
maven-cw-elevator-application ./maven-cw-elevator-application/cw-elevator-application-data/src/main/java/cn/cloudwalk/elevator/device/mapper/DeviceImageStoreMapper.xml
maven-cw-elevator-application ./maven-cw-elevator-application/cw-elevator-application-data/src/main/java/cn/cloudwalk/elevator/person/mapper/TenantVisitorFloorPolicyMapper.xml
maven-cw-elevator-application ./maven-cw-elevator-application/cw-elevator-application-data/src/main/java/cn/cloudwalk/elevator/record/mapper/AcsElevatorRecordMapper.xml
maven-cw-elevator-application ./maven-cw-elevator-application/cw-elevator-application-data/src/main/java/cn/cloudwalk/elevator/record/mapper/AcsPassRuleMapper.xml it_acs_pass_rule
maven-cw-elevator-application ./maven-cw-elevator-application/cw-elevator-application-data/src/main/java/cn/cloudwalk/elevator/record/mapper/AcsRecogRecordMapper.xml
maven-cw-elevator-application ./maven-cw-elevator-application/cw-elevator-application-data/src/main/java/cn/cloudwalk/elevator/record/mapper/ImageRuleRefMapper.xml image_rule_ref
maven-cw-elevator-application ./maven-cw-elevator-application/cw-elevator-application-data/src/main/java/cn/cloudwalk/elevator/record/mapper/SendRecordTimeMapper.xml
maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/db2/api/ApiMapper.xml
maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/db2/application/AppApiMapper.xml
maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/db2/application/ApplicationApiMapper.xml
maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/db2/application/ApplicationMapper.xml
maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/db2/application/AppResMapper.xml
maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/db2/authorization/AuthApiMapper.xml
maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/db2/authorization/AuthorizationMapper.xml
maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/db2/authorization/AuthResourceMapper.xml
maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/db2/dict/DictMapper.xml
maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/db2/dict/DictTypeMapper.xml
maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/db2/enterprise/EnterpriseMapper.xml
maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/db2/group/GroupInfoMapper.xml
maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/db2/group/GroupRoleMapper.xml
maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/db2/resource/ResourceApiMapper.xml
maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/db2/resource/ResourceMapper.xml
maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/db2/role/RoleApiMapper.xml
maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/db2/role/RoleAuthMapper.xml
maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/db2/role/RoleMapper.xml
maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/db2/role/RoleResourceMapper.xml
maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/db2/service/ServiceMapper.xml
maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/db2/user/UserAccountMapper.xml
maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/db2/user/UserApplicationMapper.xml
maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/db2/user/UserGroupMapper.xml
maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/db2/user/UserMapper.xml
maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/db2/user/UserResMapper.xml
maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/db2/user/UserRoleMapper.xml
maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/mysql/api/ApiMapper.xml
maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/mysql/application/AppApiMapper.xml
maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/mysql/application/AppBusinessMapper.xml
maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/mysql/application/ApplicationApiMapper.xml
maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/mysql/application/ApplicationMapper.xml
maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/mysql/application/AppResMapper.xml
maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/mysql/authorization/AuthApiMapper.xml
maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/mysql/authorization/AuthorizationMapper.xml
maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/mysql/authorization/AuthResourceMapper.xml
maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/mysql/dict/DictMapper.xml
maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/mysql/dict/DictTypeMapper.xml
maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/mysql/enterprise/EnterpriseMapper.xml
maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/mysql/group/GroupInfoMapper.xml
maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/mysql/group/GroupRoleMapper.xml
maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/mysql/resource/ResourceApiMapper.xml
maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/mysql/resource/ResourceMapper.xml
maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/mysql/role/RoleApiMapper.xml
maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/mysql/role/RoleAuthMapper.xml
maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/mysql/role/RoleMapper.xml
maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/mysql/role/RoleResourceMapper.xml
maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/mysql/service/ServiceMapper.xml
maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/mysql/user/UserAccountMapper.xml
maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/mysql/user/UserApplicationMapper.xml
maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/mysql/user/UserGroupMapper.xml
maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/mysql/user/UserMapper.xml
maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/mysql/user/UserResMapper.xml
maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/mysql/user/UserRoleMapper.xml
maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/oracle/api/ApiMapper.xml
maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/oracle/application/AppApiMapper.xml
maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/oracle/application/ApplicationApiMapper.xml
maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/oracle/application/ApplicationMapper.xml
maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/oracle/application/AppResMapper.xml
maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/oracle/authorization/AuthApiMapper.xml
maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/oracle/authorization/AuthorizationMapper.xml
maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/oracle/authorization/AuthResourceMapper.xml
maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/oracle/dict/DictMapper.xml
maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/oracle/dict/DictTypeMapper.xml
maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/oracle/enterprise/EnterpriseMapper.xml
maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/oracle/group/GroupInfoMapper.xml
maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/oracle/group/GroupRoleMapper.xml
maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/oracle/resource/ResourceApiMapper.xml
maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/oracle/resource/ResourceMapper.xml
maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/oracle/role/RoleApiMapper.xml
maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/oracle/role/RoleAuthMapper.xml
maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/oracle/role/RoleMapper.xml
maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/oracle/role/RoleResourceMapper.xml
maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/oracle/service/ServiceMapper.xml
maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/oracle/user/UserAccountMapper.xml
maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/oracle/user/UserApplicationMapper.xml
maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/oracle/user/UserGroupMapper.xml
maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/oracle/user/UserMapper.xml
maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/oracle/user/UserResMapper.xml
maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/oracle/user/UserRoleMapper.xml
1 maven-cw-elevator-application ./maven-cw-elevator-application/cw-elevator-application-data/src/main/java/cn/cloudwalk/elevator/codeElevatorArea/mapper/AcsElevatorCodeMapper.xml
2 maven-cw-elevator-application ./maven-cw-elevator-application/cw-elevator-application-data/src/main/java/cn/cloudwalk/elevator/device/mapper/AcsDeviceTaskMapper.xml
3 maven-cw-elevator-application ./maven-cw-elevator-application/cw-elevator-application-data/src/main/java/cn/cloudwalk/elevator/device/mapper/AcsElevatorDeviceMapper.xml
4 maven-cw-elevator-application ./maven-cw-elevator-application/cw-elevator-application-data/src/main/java/cn/cloudwalk/elevator/device/mapper/DeviceImageStoreMapper.xml
5 maven-cw-elevator-application ./maven-cw-elevator-application/cw-elevator-application-data/src/main/java/cn/cloudwalk/elevator/person/mapper/TenantVisitorFloorPolicyMapper.xml
6 maven-cw-elevator-application ./maven-cw-elevator-application/cw-elevator-application-data/src/main/java/cn/cloudwalk/elevator/record/mapper/AcsElevatorRecordMapper.xml
7 maven-cw-elevator-application ./maven-cw-elevator-application/cw-elevator-application-data/src/main/java/cn/cloudwalk/elevator/record/mapper/AcsPassRuleMapper.xml it_acs_pass_rule
8 maven-cw-elevator-application ./maven-cw-elevator-application/cw-elevator-application-data/src/main/java/cn/cloudwalk/elevator/record/mapper/AcsRecogRecordMapper.xml
9 maven-cw-elevator-application ./maven-cw-elevator-application/cw-elevator-application-data/src/main/java/cn/cloudwalk/elevator/record/mapper/ImageRuleRefMapper.xml image_rule_ref
10 maven-cw-elevator-application ./maven-cw-elevator-application/cw-elevator-application-data/src/main/java/cn/cloudwalk/elevator/record/mapper/SendRecordTimeMapper.xml
11 maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/db2/api/ApiMapper.xml
12 maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/db2/application/AppApiMapper.xml
13 maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/db2/application/ApplicationApiMapper.xml
14 maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/db2/application/ApplicationMapper.xml
15 maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/db2/application/AppResMapper.xml
16 maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/db2/authorization/AuthApiMapper.xml
17 maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/db2/authorization/AuthorizationMapper.xml
18 maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/db2/authorization/AuthResourceMapper.xml
19 maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/db2/dict/DictMapper.xml
20 maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/db2/dict/DictTypeMapper.xml
21 maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/db2/enterprise/EnterpriseMapper.xml
22 maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/db2/group/GroupInfoMapper.xml
23 maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/db2/group/GroupRoleMapper.xml
24 maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/db2/resource/ResourceApiMapper.xml
25 maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/db2/resource/ResourceMapper.xml
26 maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/db2/role/RoleApiMapper.xml
27 maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/db2/role/RoleAuthMapper.xml
28 maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/db2/role/RoleMapper.xml
29 maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/db2/role/RoleResourceMapper.xml
30 maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/db2/service/ServiceMapper.xml
31 maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/db2/user/UserAccountMapper.xml
32 maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/db2/user/UserApplicationMapper.xml
33 maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/db2/user/UserGroupMapper.xml
34 maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/db2/user/UserMapper.xml
35 maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/db2/user/UserResMapper.xml
36 maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/db2/user/UserRoleMapper.xml
37 maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/mysql/api/ApiMapper.xml
38 maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/mysql/application/AppApiMapper.xml
39 maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/mysql/application/AppBusinessMapper.xml
40 maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/mysql/application/ApplicationApiMapper.xml
41 maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/mysql/application/ApplicationMapper.xml
42 maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/mysql/application/AppResMapper.xml
43 maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/mysql/authorization/AuthApiMapper.xml
44 maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/mysql/authorization/AuthorizationMapper.xml
45 maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/mysql/authorization/AuthResourceMapper.xml
46 maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/mysql/dict/DictMapper.xml
47 maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/mysql/dict/DictTypeMapper.xml
48 maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/mysql/enterprise/EnterpriseMapper.xml
49 maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/mysql/group/GroupInfoMapper.xml
50 maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/mysql/group/GroupRoleMapper.xml
51 maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/mysql/resource/ResourceApiMapper.xml
52 maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/mysql/resource/ResourceMapper.xml
53 maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/mysql/role/RoleApiMapper.xml
54 maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/mysql/role/RoleAuthMapper.xml
55 maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/mysql/role/RoleMapper.xml
56 maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/mysql/role/RoleResourceMapper.xml
57 maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/mysql/service/ServiceMapper.xml
58 maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/mysql/user/UserAccountMapper.xml
59 maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/mysql/user/UserApplicationMapper.xml
60 maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/mysql/user/UserGroupMapper.xml
61 maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/mysql/user/UserMapper.xml
62 maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/mysql/user/UserResMapper.xml
63 maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/mysql/user/UserRoleMapper.xml
64 maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/oracle/api/ApiMapper.xml
65 maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/oracle/application/AppApiMapper.xml
66 maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/oracle/application/ApplicationApiMapper.xml
67 maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/oracle/application/ApplicationMapper.xml
68 maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/oracle/application/AppResMapper.xml
69 maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/oracle/authorization/AuthApiMapper.xml
70 maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/oracle/authorization/AuthorizationMapper.xml
71 maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/oracle/authorization/AuthResourceMapper.xml
72 maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/oracle/dict/DictMapper.xml
73 maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/oracle/dict/DictTypeMapper.xml
74 maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/oracle/enterprise/EnterpriseMapper.xml
75 maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/oracle/group/GroupInfoMapper.xml
76 maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/oracle/group/GroupRoleMapper.xml
77 maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/oracle/resource/ResourceApiMapper.xml
78 maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/oracle/resource/ResourceMapper.xml
79 maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/oracle/role/RoleApiMapper.xml
80 maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/oracle/role/RoleAuthMapper.xml
81 maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/oracle/role/RoleMapper.xml
82 maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/oracle/role/RoleResourceMapper.xml
83 maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/oracle/service/ServiceMapper.xml
84 maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/oracle/user/UserAccountMapper.xml
85 maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/oracle/user/UserApplicationMapper.xml
86 maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/oracle/user/UserGroupMapper.xml
87 maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/oracle/user/UserMapper.xml
88 maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/oracle/user/UserResMapper.xml
89 maven-cwos-resource ./maven-cwos-resource/cwos-component-resource-data/src/main/java/cn/cloudwalk/data/resource/mapper/oracle/user/UserRoleMapper.xml
@@ -0,0 +1,396 @@
# 数据库表结构参考手册 — 实施计划
> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking.
**Goal:** 走查全部 5 个数据库(2 库直连 + 3 库代码推导),输出带 Mermaid ER 图 + 脱敏样本数据的 Markdown 参考手册。
**Architecture:** 分三层执行 — 数据库查询层(直连 INFORMATION_SCHEMA + SELECT 样本)、代码扫描层(并行读取全部 MyBatis Mapper XML 提取表/列/JOIN)、文档生成层(交叉验证 + 组装 Markdown)。直连库与代码扫描完全并行。
**Tech Stack:** MySQL CLI (`mysql`), Bash, Python 3JSON 缓存), Mermaid erDiagram
**Spec:** `docs/superpowers/specs/2026-05-01-database-schema-reference-design.md`
---
## 前置检查
- [ ] **Step 0: 确认数据库可达**
```bash
mysql -h 192.168.3.12 -P 3307 -u root -p123456 -e "SELECT VERSION(); SHOW DATABASES LIKE '%component%'; SHOW DATABASES LIKE '%elevator%';"
```
期望输出: MySQL 版本号 + `component-organization``cw-elevator-application` 两个库存在。
> 若失败:全量降级为代码推导模式(见 Task 4 备选路径)。
---
### Task 1: 采集组件组织库 schema + 样本
**Files:**
- Create: `docs/superpowers/data/component-organization/schema_raw.json`
- Create: `docs/superpowers/data/component-organization/tables.json`
- Create: `docs/superpowers/data/component-organization/samples/`
- [ ] **Step 1: 导出表清单**
```bash
mkdir -p docs/superpowers/data/component-organization/samples
mysql -h 192.168.3.12 -P 3307 -u root -p123456 component-organization -N -e \
"SELECT TABLE_NAME, IFNULL(TABLE_ROWS,0), ENGINE, IFNULL(TABLE_COMMENT,'') \
FROM INFORMATION_SCHEMA.TABLES \
WHERE TABLE_SCHEMA='component-organization' AND TABLE_TYPE='BASE TABLE' \
ORDER BY TABLE_NAME;" > docs/superpowers/data/component-organization/tables.tsv
```
- [ ] **Step 2: 导出全部列定义**
```bash
mysql -h 192.168.3.12 -P 3307 -u root -p123456 component-organization -N -e \
"SELECT TABLE_NAME, COLUMN_NAME, DATA_TYPE, IS_NULLABLE, IFNULL(COLUMN_DEFAULT,'NULL'), COLUMN_KEY, EXTRA, IFNULL(COLUMN_COMMENT,'') \
FROM INFORMATION_SCHEMA.COLUMNS \
WHERE TABLE_SCHEMA='component-organization' AND TABLE_NAME NOT LIKE 'QRTZ_%' AND TABLE_NAME NOT LIKE 'quartz_%' \
ORDER BY TABLE_NAME, ORDINAL_POSITION;" > docs/superpowers/data/component-organization/columns.tsv
```
- [ ] **Step 3: 导出索引**
```bash
mysql -h 192.168.3.12 -P 3307 -u root -p123456 component-organization -N -e \
"SELECT TABLE_NAME, INDEX_NAME, COLUMN_NAME, NON_UNIQUE, SEQ_IN_INDEX \
FROM INFORMATION_SCHEMA.STATISTICS \
WHERE TABLE_SCHEMA='component-organization' \
ORDER BY TABLE_NAME, INDEX_NAME, SEQ_IN_INDEX;" > docs/superpowers/data/component-organization/indexes.tsv
```
- [ ] **Step 4: 逐表采集样本(每表 3 行)**
```bash
# 读取表清单,排除系统表,对每张表执行 SELECT * LIMIT 3
while IFS=$'\t' read -r table_name rest; do
if [[ "$table_name" != QRTZ_* ]] && [[ "$table_name" != quartz_* ]]; then
echo "--- Extracting: $table_name ---"
mysql -h 192.168.3.12 -P 3307 -u root -p123456 component-organization -t -e \
"SELECT * FROM \`$table_name\` ORDER BY 1 DESC LIMIT 3;" \
> "docs/superpowers/data/component-organization/samples/${table_name}.txt" 2>&1
fi
done < <(cut -f1 docs/superpowers/data/component-organization/tables.tsv)
```
- [ ] **Step 5: 提交中间产物**
```bash
git add docs/superpowers/data/component-organization/
git commit -m "data: add component-organization schema raw dump and samples"
```
---
### Task 2: 采集电梯应用库 schema + 样本
**Files:**
- Create: `docs/superpowers/data/cw-elevator-application/schema_raw.json`
- Create: `docs/superpowers/data/cw-elevator-application/tables.json`
- Create: `docs/superpowers/data/cw-elevator-application/samples/`
- [ ] **Step 1: 导出表清单**
```bash
mkdir -p docs/superpowers/data/cw-elevator-application/samples
mysql -h 192.168.3.12 -P 3307 -u root -p123456 cw-elevator-application -N -e \
"SELECT TABLE_NAME, IFNULL(TABLE_ROWS,0), ENGINE, IFNULL(TABLE_COMMENT,'') \
FROM INFORMATION_SCHEMA.TABLES \
WHERE TABLE_SCHEMA='cw-elevator-application' AND TABLE_TYPE='BASE TABLE' \
ORDER BY TABLE_NAME;" > docs/superpowers/data/cw-elevator-application/tables.tsv
```
- [ ] **Step 2: 导出全部列定义**
```bash
mysql -h 192.168.3.12 -P 3307 -u root -p123456 cw-elevator-application -N -e \
"SELECT TABLE_NAME, COLUMN_NAME, DATA_TYPE, IS_NULLABLE, IFNULL(COLUMN_DEFAULT,'NULL'), COLUMN_KEY, EXTRA, IFNULL(COLUMN_COMMENT,'') \
FROM INFORMATION_SCHEMA.COLUMNS \
WHERE TABLE_SCHEMA='cw-elevator-application' AND TABLE_NAME NOT LIKE 'QRTZ_%' AND TABLE_NAME NOT LIKE 'quartz_%' \
ORDER BY TABLE_NAME, ORDINAL_POSITION;" > docs/superpowers/data/cw-elevator-application/columns.tsv
```
- [ ] **Step 3: 导出索引**
```bash
mysql -h 192.168.3.12 -P 3307 -u root -p123456 cw-elevator-application -N -e \
"SELECT TABLE_NAME, INDEX_NAME, COLUMN_NAME, NON_UNIQUE, SEQ_IN_INDEX \
FROM INFORMATION_SCHEMA.STATISTICS \
WHERE TABLE_SCHEMA='cw-elevator-application' \
ORDER BY TABLE_NAME, INDEX_NAME, SEQ_IN_INDEX;" > docs/superpowers/data/cw-elevator-application/indexes.tsv
```
- [ ] **Step 4: 逐表采集样本(每表 3 行)**
```bash
while IFS=$'\t' read -r table_name rest; do
if [[ "$table_name" != QRTZ_* ]] && [[ "$table_name" != quartz_* ]]; then
echo "--- Extracting: $table_name ---"
mysql -h 192.168.3.12 -P 3307 -u root -p123456 cw-elevator-application -t -e \
"SELECT * FROM \`$table_name\` ORDER BY 1 DESC LIMIT 3;" \
> "docs/superpowers/data/cw-elevator-application/samples/${table_name}.txt" 2>&1
fi
done < <(cut -f1 docs/superpowers/data/cw-elevator-application/tables.tsv)
```
- [ ] **Step 5: 提交中间产物**
```bash
git add docs/superpowers/data/cw-elevator-application/
git commit -m "data: add cw-elevator-application schema raw dump and samples"
```
---
### Task 3: 扫描所有 MyBatis Mapper XML 提取表/列/JOIN
**Files:**
- Create: `docs/superpowers/data/mapper_tables.tsv`
- [ ] **Step 1: 枚举所有 Mapper XML 文件**
```bash
find ./maven-cw-elevator-application ./maven-cwos-resource ./maven-ninca-crk ./maven-ninca-qk-alarm \
-name "*Mapper.xml" -path "*/src/main/*" 2>/dev/null | sort \
> docs/superpowers/data/mapper_files.txt
wc -l docs/superpowers/data/mapper_files.txt
```
期望输出: ~80+ 个 Mapper XML 文件。
- [ ] **Step 2: 从 Mapper XML 提取 INSERT/UPDATE/FROM 表名**
```bash
# 提取 INSERT INTO / UPDATE / FROM / JOIN 后的表名
> docs/superpowers/data/mapper_tables.tsv
while IFS= read -r xmlfile; do
module=$(echo "$xmlfile" | cut -d'/' -f2)
tablenames=$(grep -oP '(INSERT\s+INTO\s+|UPDATE\s+|FROM\s+|JOIN\s+)\s*\`?\K[a-z_][a-z0-9_]*' "$xmlfile" 2>/dev/null | sort -u | tr '\n' ',')
echo -e "$module\t$xmlfile\t$tablenames"
done < docs/superpowers/data/mapper_files.txt > docs/superpowers/data/mapper_tables.tsv
```
- [ ] **Step 3: 提取 resultMap 列映射**
对每个 Mapper XML,读取 `<resultMap>` 中的 `<result column="..." property="...">` 提取列名。用下面脚本:
```bash
> docs/superpowers/data/mapper_columns.tsv
while IFS= read -r xmlfile; do
cols=$(grep -oP '<result\s+column="\K[^"]+' "$xmlfile" 2>/dev/null | sort -u | tr '\n' ',')
ids=$(grep -oP '<id\s+column="\K[^"]+' "$xmlfile" 2>/dev/null | sort -u | tr '\n' ',')
echo -e "${xmlfile}\t${ids}|${cols}"
done < docs/superpowers/data/mapper_files.txt > docs/superpowers/data/mapper_columns.tsv
```
- [ ] **Step 4: 提取 JOIN 关系**
```bash
> docs/superpowers/data/mapper_joins.tsv
while IFS= read -r xmlfile; do
joins=$(grep -oP '(LEFT\s+|RIGHT\s+|INNER\s+)?JOIN\s+\`?\K[a-z_][a-z0-9_]*\s+ON\s+\K[^;]+' "$xmlfile" 2>/dev/null | tr '\n' '|')
if [ -n "$joins" ]; then
echo -e "${xmlfile}\t${joins}"
fi
done < docs/superpowers/data/mapper_files.txt > docs/superpowers/data/mapper_joins.tsv
```
- [ ] **Step 5: 扫描 ShardingSphere 分表配置**
```bash
grep -r "actual-data-nodes\|sharding-column\|table-strategy" \
--include="*.properties" --include="*.yml" --include="*.yaml" \
./maven-cw-elevator-application/ ./maven-ninca-crk/ 2>/dev/null \
> docs/superpowers/data/sharding_config.txt
```
- [ ] **Step 6: 提交**
```bash
git add docs/superpowers/data/mapper_*.tsv docs/superpowers/data/mapper_files.txt docs/superpowers/data/sharding_config.txt
git commit -m "data: add MyBatis mapper table/column/join extraction"
```
---
### Task 4: 代码推导不可达库的表结构
**Files:**
- Create: `docs/superpowers/data/ninca-crk-std/mapper_tables.tsv`
- Create: `docs/superpowers/data/alarm-deploy/mapper_tables.tsv`
- Create: `docs/superpowers/data/cwos-resource/mapper_tables.tsv`
**ninca_crk_std****alarm_deploy** 的 MyBatis mapper 路径在 `application.properties` 中声明:
- ninca-crk: `classpath*:cn/cloudwalk/data/**/mysql/*.xml,classpath*:cn/cloudwalk/task/data/**/mysql/*.xml`
- alarm: `classpath:cn/cloudwalk/data/**/mysql/*.xml`
- cwos-resource: Mapper XML 已在 Task 3 中扫描
- [ ] **Step 1: 从 ninca-crk 的 Mapper XML 提取表信息**
```bash
# ninca-crk 的 Mapper XML 位于 src/main/java 下(非 resources/mapper
find ./maven-ninca-crk -name "*.xml" -path "*/mysql/*" 2>/dev/null | sort > docs/superpowers/data/ninca-crk-std/mapper_files.txt
while IFS= read -r xmlfile; do
tablenames=$(grep -oP '(INSERT\s+INTO\s+|UPDATE\s+|FROM\s+|JOIN\s+)\s*\`?\K[a-z_][a-z0-9_]*' "$xmlfile" 2>/dev/null | sort -u | tr '\n' ',')
echo -e "ninca-crk-std\t$xmlfile\t$tablenames"
done < docs/superpowers/data/ninca-crk-std/mapper_files.txt > docs/superpowers/data/ninca-crk-std/mapper_tables.tsv
```
- [ ] **Step 2: 从 alarm 的 Mapper XML 提取表信息**
```bash
find ./maven-ninca-qk-alarm -name "*.xml" -path "*/mysql/*" 2>/dev/null | sort > docs/superpowers/data/alarm-deploy/mapper_files.txt
while IFS= read -r xmlfile; do
tablenames=$(grep -oP '(INSERT\s+INTO\s+|UPDATE\s+|FROM\s+|JOIN\s+)\s*\`?\K[a-z_][a-z0-9_]*' "$xmlfile" 2>/dev/null | sort -u | tr '\n' ',')
echo -e "alarm-deploy\t$xmlfile\t$tablenames"
done < docs/superpowers/data/alarm-deploy/mapper_files.txt > docs/superpowers/data/alarm-deploy/mapper_tables.tsv
```
- [ ] **Step 3: 从 cwos-resource 的 Mapper XML 提取表信息**
```bash
# cwos-resource 有 db2/mysql/oracle 三个方言目录,以 mysql/ 为准
find ./maven-cwos-resource -name "*.xml" -path "*/mysql/*" 2>/dev/null | sort > docs/superpowers/data/cwos-resource/mapper_files.txt
while IFS= read -r xmlfile; do
tablenames=$(grep -oP '(INSERT\s+INTO\s+|UPDATE\s+|FROM\s+|JOIN\s+)\s*\`?\K[a-z_][a-z0-9_]*' "$xmlfile" 2>/dev/null | sort -u | tr '\n' ',')
echo -e "cwos-resource\t$xmlfile\t$tablenames"
done < docs/superpowers/data/cwos-resource/mapper_files.txt > docs/superpowers/data/cwos-resource/mapper_tables.tsv
```
- [ ] **Step 4: 提交**
```bash
git add docs/superpowers/data/ninca-crk-std/ docs/superpowers/data/alarm-deploy/ docs/superpowers/data/cwos-resource/
git commit -m "data: add code-derived table info for unreachable databases"
```
---
### Task 5: 交叉验证与生成最终 Markdown 文档
**Files:**
- Create: `docs/superpowers/specs/2026-05-01-database-schema-reference.md`(最终产物)
此任务通过 subagent 执行——将 Task 1-4 采集的原始数据 + 现有架构文档 + Mapper 扫描结果汇总为最终手册。
- [ ] **Step 1: 交付 subagent 生成文档**
委托 `deep` agent,传入以下 prompt
```
TASK: 根据以下原始数据生成数据库表结构参考手册 Markdown 文件。
EXPECTED OUTCOME:
- 文件写入 docs/superpowers/specs/2026-05-01-database-schema-reference.md
- 包含 9 个章节(见设计说明 §2)
- 每库有 Mermaid erDiagram ER 图
- 每表有列清单(列名、类型、可空、键、注释)
- 可连库的表有脱敏样本数据(Markdown 表格,≤3 行)
- 跨库关系总图
- 代码-表映射索引
REQUIRED TOOLS: Read, Write, Bash
MUST DO:
1. 读取设计说明: docs/superpowers/specs/2026-05-01-database-schema-reference-design.md
2. 读取现有架构文档: docs/architecture/租户组织人员访客-数据模型与用例.md
3. 读取 Task 1-2 的 schema 原始数据: docs/superpowers/data/component-organization/ 和 cw-elevator-application/ 下的 tables.tsv, columns.tsv, indexes.tsv
4. 读取 Task 1-2 的样本数据: samples/ 目录下各 .txt 文件
5. 读取 Task 3-4 的 Mapper 扫描结果: docs/superpowers/data/mapper_tables.tsv, mapper_columns.tsv, mapper_joins.tsv
6. 对每张表应用脱敏规则(设计说明 §5.3):姓名截断、手机号截断、IP替换、密码列跳过、时间戳转换
7. 按设计说明 §4 规范绘制 Mermaid ER 图:业务关键列、三种关系线(约束/JOIN/跨库)、subgraph 分包
8. 交叉验证:列出「库中有但代码无 Mapper」的表(标注为运维/外部表),对比 DDL 与实际列
9. 对不可达库(ninca-crk-std, alarm-deploy, cwos-resource)显式标注「⚠️ 未连接生产库,从代码推导」
10. Mermaid 语法必须可渲染(erDiagram 关键字、正确的 {} 语法、||--o{ 关系线)
11. 文档中不出现 "TBD"、"TODO"、"待补充"
MUST NOT DO:
- 不要编造未在原始数据中出现的表名或列名
- 不要对不可达库声称有样本数据
- 不要包含系统表(QRTZ_*, quartz_*
- 不要包含未脱敏的姓名/手机号/IP
CONTEXT:
- 仓库路径: /media/zebra/9e8fa357-7db6-4d70-88ed-d5de5a059a663/星河湾星中星/源码
- 数据库环境: 192.168.3.12:3307 (MySQL), user=root, password=123456
- 数据库: component-organization, cw-elevator-application (直连); ninca_crk_std, alarm_deploy, cwos_resource (代码推导)
- 现有架构文档已有 organization 库 5 表 + elevator 库 2 表的 ER 模型,以此为起点扩展
- MyBatis Mapper XML 路径已在 mapper_files.txt 中列出
```
- [ ] **Step 2: 验证文档完整性**
```bash
# 检查文档存在且非空
wc -l docs/superpowers/specs/2026-05-01-database-schema-reference.md
# 检查 Mermaid 块数量(应有 ≥5 个 erDiagram 块)
grep -c 'erDiagram' docs/superpowers/specs/2026-05-01-database-schema-reference.md
# 检查无占位符
! grep -n 'TBD\|TODO\|待补充' docs/superpowers/specs/2026-05-01-database-schema-reference.md
echo "Exit: $?"
```
期望: 文件 ≥ 500 行,≥ 5 个 erDiagram 块,无占位符匹配(exit 0)。
- [ ] **Step 3: 提交**
```bash
git add docs/superpowers/specs/2026-05-01-database-schema-reference.md
git commit -m "docs: add full database schema reference manual with ER diagrams and sample data"
```
---
### Task 6: 收尾清理
- [ ] **Step 1: 取消中间数据跟踪(可选)**
若中间数据不应入库,更新 `.gitignore`
```bash
# 如需排除原始数据
echo "docs/superpowers/data/" >> .gitignore
```
- [ ] **Step 2: 最终提交**
```bash
git add -A
git status
git commit -m "chore: finalize database schema reference delivery"
```
---
## 备选路径
### 若 192.168.3.12 不可达
跳过 Task 1 和 Task 2。所有表结构从代码 Mapper XML 推导,标注「⚠️ 数据库不可达,全部信息从代码推导」。在 Task 5 的 subagent prompt 中移除「读取样本数据」步骤。
### 若某个库的 Mapper XML 为空
对应章节仅输出「该模块未发现 MyBatis Mapper XML,无法从代码推导表结构」,不生成 ER 图。
---
## 完成检查清单
- [ ] 产物文件 `docs/superpowers/specs/2026-05-01-database-schema-reference.md` 存在且 ≥ 500 行
- [ ] 5 个数据库各有独立章节 + ER 图
- [ ] 跨库关系总图存在
- [ ] 代码-表映射索引覆盖全部 Mapper XML
- [ ] 可连库的每张表有 1-3 行脱敏样本
- [ ]`TBD` / `TODO` / `待补充`
- [ ] 所有 Mermaid 块语法正确可渲染
- [ ] 脱敏规则已应用(姓名截断、手机号截断等)
@@ -0,0 +1,647 @@
# 租户访客楼层策略 org_id 粒度修复 — 实施计划
> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking.
**Goal:**`tenant_visitor_floor_policy` 的策略键从 `business_id` 改为 `org_id`,实现二选一语义(有策略用 allow,无策略用 floorList),修复 F1/F2/W2 问题。
**Architecture:** DDL 先上线(加列+改约束,不影响行为)→ 代码切换(Mapper/DAO/Service 三层的 business_id → org_id + 二选一逻辑)→ 数据迁移(运维 SQL 填 org_id)。整体改动控制在 7 个文件内,最小风险。
**Tech Stack:** Java 8, Spring Boot, MyBatis, MySQL 5.7
**Spec:** `docs/superpowers/specs/2026-05-01-org-id-policy-fix-design.md`
---
## 前置条件
- [ ] **Step 0: 确认分支与编译环境**
```bash
git checkout -b fix/org-id-policy-granularity
cd maven-cw-elevator-application && mvn formatter:validate -Dformatter-maven-plugin.version=2.16.0
```
期望: formatter 校验通过。
---
### Task 1: DDL — 策略表结构变更
**Files:**
- Create: `docs/sql/tenant_visitor_floor_policy_v2.sql`
- [ ] **Step 1: 编写 DDL 脚本**
```sql
-- 租户访客楼层策略:org_id 粒度修复
-- 执行顺序:先 DDL → 数据迁移(Task 5)→ 发应用包
-- 回滚:DROP INDEX uk_org_building, DROP COLUMN org_id, ADD UNIQUE KEY uk_biz_building (business_id, building_id)
USE `cw-elevator-application`;
-- 1. 新增 org_id 列
ALTER TABLE tenant_visitor_floor_policy
ADD COLUMN org_id VARCHAR(32) NULL COMMENT '组织节点ID(cw_is_organization.ID)'
AFTER business_id;
-- 2. 替换唯一约束(business_id → org_id
ALTER TABLE tenant_visitor_floor_policy
DROP INDEX uk_biz_building,
ADD UNIQUE KEY uk_org_building (org_id, building_id);
-- 3. 标记 business_id 为废弃
ALTER TABLE tenant_visitor_floor_policy
MODIFY COLUMN business_id VARCHAR(64) NULL COMMENT 'DEPRECATED: 已废弃,以 org_id 为准';
-- 验证
SELECT COLUMN_NAME, COLUMN_KEY, COLUMN_COMMENT
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'cw-elevator-application'
AND TABLE_NAME = 'tenant_visitor_floor_policy'
ORDER BY ORDINAL_POSITION;
```
- [ ] **Step 2: 在开发库执行 DDL**
```bash
mysql -h 192.168.3.12 -P 3307 -u root -p123456 cw-elevator-application < docs/sql/tenant_visitor_floor_policy_v2.sql
```
期望: 无错误,`org_id` 列存在,`uk_org_building` 索引存在,`uk_biz_building` 已删除。
- [ ] **Step 3: 提交**
```bash
git add docs/sql/tenant_visitor_floor_policy_v2.sql
git commit -m "feat: add org_id column and uk_org_building constraint to tenant_visitor_floor_policy"
```
---
### Task 2: DTO — 新增 orgId 字段
**Files:**
- Modify: `maven-cw-elevator-application/cw-elevator-application-data/src/main/java/cn/cloudwalk/elevator/person/dto/TenantVisitorFloorPolicyDto.java`
- [ ] **Step 1: 添加 orgId 字段 + getter/setter**
`businessId` 的 setter 之后插入:
```java
// 新增字段
private String orgId;
public String getOrgId() {
return orgId;
}
public void setOrgId(String orgId) {
this.orgId = orgId;
}
```
> 注意:`businessId` 字段保留不删,兼容旧序列化。
- [ ] **Step 2: 验证编译**
```bash
cd maven-cw-elevator-application && mvn compile -pl cw-elevator-application-data -am -DskipTests
```
期望: BUILD SUCCESS。
- [ ] **Step 3: 提交**
```bash
git add maven-cw-elevator-application/cw-elevator-application-data/src/main/java/cn/cloudwalk/elevator/person/dto/TenantVisitorFloorPolicyDto.java
git commit -m "feat: add orgId field to TenantVisitorFloorPolicyDto"
```
---
### Task 3: Mapper — SQL 切换 business_id → org_id
**Files:**
- Modify: `maven-cw-elevator-application/cw-elevator-application-data/src/main/java/cn/cloudwalk/elevator/person/mapper/TenantVisitorFloorPolicyMapper.xml`
- Modify: `maven-cw-elevator-application/cw-elevator-application-data/src/main/java/cn/cloudwalk/elevator/person/mapper/TenantVisitorFloorPolicyMapper.java`
- [ ] **Step 1: 修改 Mapper XML — WHERE 条件 + 映射**
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.cloudwalk.elevator.person.mapper.TenantVisitorFloorPolicyMapper">
<select id="selectEnabledByOrgId" resultType="cn.cloudwalk.elevator.person.dto.TenantVisitorFloorPolicyDto">
SELECT id,
org_id AS orgId,
policy_type AS policyType,
allow_zone_ids AS allowZoneIds,
building_id AS buildingId,
enabled AS enabled,
policy_version AS policyVersion
FROM tenant_visitor_floor_policy
WHERE org_id = #{orgId,jdbcType=VARCHAR}
AND enabled = 1
AND policy_type = 'INTERSECT_ALLOWLIST'
AND (building_id IS NULL OR building_id = '')
ORDER BY updated_at DESC, policy_version DESC
LIMIT 1
</select>
<!-- 旧方法保留作历史参考(可选删除)
<select id="selectEnabledTenantDefault" resultType="...">
... business_id ...
</select>
-->
</mapper>
```
- [ ] **Step 2: 修改 Mapper 接口**
```java
package cn.cloudwalk.elevator.person.mapper;
import cn.cloudwalk.elevator.person.dto.TenantVisitorFloorPolicyDto;
import org.apache.ibatis.annotations.Param;
public interface TenantVisitorFloorPolicyMapper {
/**
* 按组织节点 ID 查询启用中的 INTERSECT_ALLOWLIST 策略(building_id 为空)。
*/
TenantVisitorFloorPolicyDto selectEnabledByOrgId(@Param("orgId") String orgId);
// 旧方法(废弃,保留以兼容编译)
// TenantVisitorFloorPolicyDto selectEnabledTenantDefault(@Param("businessId") String businessId);
}
```
- [ ] **Step 3: 验证编译**
```bash
cd maven-cw-elevator-application && mvn compile -pl cw-elevator-application-data -am -DskipTests
```
期望: BUILD SUCCESS。
- [ ] **Step 4: 提交**
```bash
git add maven-cw-elevator-application/cw-elevator-application-data/src/main/java/cn/cloudwalk/elevator/person/mapper/TenantVisitorFloorPolicyMapper.xml
git add maven-cw-elevator-application/cw-elevator-application-data/src/main/java/cn/cloudwalk/elevator/person/mapper/TenantVisitorFloorPolicyMapper.java
git commit -m "feat: change policy query from business_id to org_id in TenantVisitorFloorPolicyMapper"
```
---
### Task 4: DAO — 接口与实现切换
**Files:**
- Modify: `maven-cw-elevator-application/cw-elevator-application-data/src/main/java/cn/cloudwalk/elevator/person/dao/TenantVisitorFloorPolicyDao.java`
- Modify: `maven-cw-elevator-application/cw-elevator-application-data/src/main/java/cn/cloudwalk/elevator/person/impl/TenantVisitorFloorPolicyDaoImpl.java`
- [ ] **Step 1: 修改 DAO 接口**
```java
package cn.cloudwalk.elevator.person.dao;
import cn.cloudwalk.elevator.person.dto.TenantVisitorFloorPolicyDto;
public interface TenantVisitorFloorPolicyDao {
/**
* 按组织节点 ID 查询启用中的 INTERSECT_ALLOWLIST 策略(building_id 为空)。
*
* @param orgId 组织节点 IDcw_is_organization.ID
* @return 无配置时 null
*/
TenantVisitorFloorPolicyDto selectEnabledByOrgId(String orgId);
// 旧方法(废弃)
// TenantVisitorFloorPolicyDto selectEnabledTenantDefault(String businessId);
}
```
- [ ] **Step 2: 修改 DAO 实现**
```java
package cn.cloudwalk.elevator.person.impl;
import cn.cloudwalk.elevator.person.dao.TenantVisitorFloorPolicyDao;
import cn.cloudwalk.elevator.person.dto.TenantVisitorFloorPolicyDto;
import cn.cloudwalk.elevator.person.mapper.TenantVisitorFloorPolicyMapper;
import javax.annotation.Resource;
import org.springframework.stereotype.Repository;
@Repository
public class TenantVisitorFloorPolicyDaoImpl implements TenantVisitorFloorPolicyDao {
@Resource
private TenantVisitorFloorPolicyMapper tenantVisitorFloorPolicyMapper;
@Override
public TenantVisitorFloorPolicyDto selectEnabledByOrgId(String orgId) {
return this.tenantVisitorFloorPolicyMapper.selectEnabledByOrgId(orgId);
}
}
```
- [ ] **Step 3: 验证编译**
```bash
cd maven-cw-elevator-application && mvn compile -pl cw-elevator-application-data -am -DskipTests
```
期望: BUILD SUCCESS。
- [ ] **Step 4: 提交**
```bash
git add maven-cw-elevator-application/cw-elevator-application-data/src/main/java/cn/cloudwalk/elevator/person/dao/TenantVisitorFloorPolicyDao.java
git add maven-cw-elevator-application/cw-elevator-application-data/src/main/java/cn/cloudwalk/elevator/person/impl/TenantVisitorFloorPolicyDaoImpl.java
git commit -m "feat: update DAO interface and impl to use org_id query"
```
---
### Task 5: Service — addVisitor 核心逻辑重写
**Files:**
- Modify: `maven-cw-elevator-application/cw-elevator-application-service/src/main/java/cn/cloudwalk/elevator/person/impl/PersonRuleServiceImpl.java`
这是改动最大的文件。分 3 个子步骤。
- [ ] **Step 1: 重写 addVisitor 方法(第 174-275 行)**
完整替换:
```java
@CloudwalkParamsValidate
public CloudwalkResult<Boolean> addVisitor(AcsPersonAddVisitorParam param, CloudwalkCallContext context)
throws ServiceException {
this.logger.info("根据被访人添加访客派梯权限开始,AcsPersonAddVisitorParam=[{}], CloudwalkCallContext=[{}]",
JSONObject.toJSONString(param), JSONObject.toJSONString(context));
try {
// ===== Step 1: 获取被访人信息(UC-01/02 都需要) =====
PersonDetailParam detailParam = new PersonDetailParam();
detailParam.setId(param.getPersonId());
detailParam.setBusinessId(context.getCompany().getCompanyId());
CloudwalkResult<PersonResult> detail = this.personService.detail(detailParam, context);
if (detail == null || !detail.isSuccess()) {
String code = detail != null ? detail.getCode() : "76260531";
String msg = detail != null ? detail.getMessage() : getMessage("76260531");
return CloudwalkResult.fail(code, msg);
}
PersonResult personResult = (PersonResult) detail.getData();
if (personResult == null) {
return CloudwalkResult.fail("76260531", getMessage("76260531"));
}
List<String> hostFloors = personResult.getFloorList();
if (CollectionUtils.isEmpty(hostFloors)) {
return CloudwalkResult.fail("76260531", getMessage("76260531"));
}
// ===== Step 2: 按 org_id 查找策略 =====
TenantVisitorFloorPolicyDto policy = findPolicyByOrgIds(personResult.getOrganizationIds());
// ===== Step 3: 确定生效楼层(二选一,不求交) =====
List<String> effectiveFloors;
boolean callerProvidedFloors = !CollectionUtils.isEmpty(param.getFloorIds());
if (policy != null) {
// 有策略:直接用 allow,忽略调用方 floorIds
effectiveFloors = resolveEffectiveFloors(
callerProvidedFloors ? param.getFloorIds() : hostFloors,
hostFloors, policy, param.getPersonId());
} else {
// 无策略:用调用方 floorIds 或 hostFloors
effectiveFloors = callerProvidedFloors ? param.getFloorIds() : hostFloors;
if (callerProvidedFloors) {
// UC-02 软校验:记录不在 hostFloors 中的楼层
Set<String> hostSet = new HashSet<>(hostFloors);
List<String> outliers = param.getFloorIds().stream()
.filter(f -> !hostSet.contains(f))
.collect(Collectors.toList());
if (!outliers.isEmpty()) {
this.logger.warn("UC-02 传入非被访人授权楼层 businessId={} personId={} outliers={}",
context.getCompany().getCompanyId(), param.getPersonId(), outliers);
}
}
}
if (CollectionUtils.isEmpty(effectiveFloors)) {
return CloudwalkResult.fail("76260531", getMessage("76260531"));
}
param.setFloorIds(effectiveFloors);
// ===== Step 4: 落库(不变) =====
ZoneQueryParam zoneQueryParam = new ZoneQueryParam();
zoneQueryParam.setId(param.getFloorIds().get(0));
zoneQueryParam.setRowsOfPage(10);
zoneQueryParam.setCurrentPage(1);
CloudwalkResult<CloudwalkPageAble<ZoneResult>> zonePage = this.zoneService.page(zoneQueryParam, context);
List<ZoneResult> zoneResults = (List<ZoneResult>) ((CloudwalkPageAble) zonePage.getData()).getDatas();
String imageStoreId =
this.deviceImageStoreDao.getByBuildingId(((ZoneResult) zoneResults.get(0)).getParentId());
List<ImageRuleRefAddDto> insertList = new ArrayList<>();
for (String floorId : param.getFloorIds()) {
ImageRuleRefResultDto defaultRule = this.imageRuleRefDao.getDefaultByZoneId(floorId);
ImageRuleRefAddDto addDto = new ImageRuleRefAddDto();
addDto.setId(genUUID());
addDto.setBusinessId(context.getCompany().getCompanyId());
addDto.setPersonId(param.getVisitorId());
addDto.setParentRule(defaultRule.getId());
addDto.setName(defaultRule.getName());
addDto.setZoneId(defaultRule.getZoneId());
addDto.setZoneName(defaultRule.getZoneName());
addDto.setCreateTime(Long.valueOf(System.currentTimeMillis()));
addDto.setLastUpdateTime(Long.valueOf(System.currentTimeMillis()));
addDto.setPersonDelete(Integer.valueOf(0));
insertList.add(addDto);
}
this.logger.info("访客添加派梯权限开始,数据为=[{}]", JSONObject.toJSONString(insertList));
if (!CollectionUtils.isEmpty(insertList)) {
this.imageRuleRefDao.insertList(insertList);
}
ImageStorePersonBindParam imageStorePersonBindParam = new ImageStorePersonBindParam();
imageStorePersonBindParam.setImageStoreId(imageStoreId);
imageStorePersonBindParam.setPersonIds(Collections.singletonList(param.getVisitorId()));
imageStorePersonBindParam.setNullDateIsLongTerm(Boolean.valueOf(true));
imageStorePersonBindParam.setExpiryBeginDate(param.getBegVisitorTime());
imageStorePersonBindParam.setExpiryEndDate(param.getEndVisitorTime());
this.logger.info("远程调用绑定人员图库开始,imageStorePersonBindParam=[{}], CloudwalkCallContext=[{}]",
JSONObject.toJSONString(imageStorePersonBindParam), JSONObject.toJSONString(context));
CloudwalkResult<ImgStoreBatchBindPersonResult> bindResult =
this.imageStorePersonService.batchBind(imageStorePersonBindParam, context);
if (!bindResult.isSuccess()) {
this.logger.error("远程调用绑定人员图库异常,原因:[{}],失败人员id:[{}]", bindResult.getMessage(), param.getVisitorId());
return CloudwalkResult.fail(bindResult.getCode(), bindResult.getMessage());
}
UpdateGroupPersonRefParam refParam = new UpdateGroupPersonRefParam();
refParam.setBusinessId(context.getCompany().getCompanyId());
refParam.setPersonIds(Collections.singletonList(param.getVisitorId()));
refParam.setImageStoreId(imageStoreId);
this.imageStorePersonService.updateGroupPersonRef(refParam, context);
} catch (ServiceException e) {
throw e;
} catch (Exception e) {
this.logger.error("根据被访人添加访客派梯权限失败,原因:[{}]", e);
throw new ServiceException("76260530", getMessage("76260530"));
}
return CloudwalkResult.success(Boolean.valueOf(true));
}
```
- [ ] **Step 2: 添加两个新辅助方法 + 修改 W2(JSON 日志升级)**
`addVisitor` 方法之后插入:
```java
/**
* 按 org_id 查找策略,遍历 organizationIds 取第一个命中。
*/
private TenantVisitorFloorPolicyDto findPolicyByOrgIds(List<String> orgIds) {
if (CollectionUtils.isEmpty(orgIds)) return null;
for (String orgId : orgIds) {
TenantVisitorFloorPolicyDto p = this.tenantVisitorFloorPolicyDao.selectEnabledByOrgId(orgId);
if (p != null && p.getEnabled() != null && p.getEnabled().intValue() == 1) {
List<String> allow = parseAllowZoneIds(p.getAllowZoneIds());
if (!CollectionUtils.isEmpty(allow)) return p;
}
}
return null;
}
/**
* 二选一:用 allow 替换 fallbackFloors。
* 约束:allow 必须是 hostFloors 的子集,否则拒绝(76260533)。
*/
private List<String> resolveEffectiveFloors(
List<String> fallbackFloorsUnused, List<String> hostFloors,
TenantVisitorFloorPolicyDto policy, String personId) {
List<String> allow = parseAllowZoneIds(policy.getAllowZoneIds());
if (CollectionUtils.isEmpty(allow)) return fallbackFloorsUnused;
// 安全校验:allow 中每个值必须在 hostFloors 中存在
Set<String> hostSet = new HashSet<>(hostFloors);
List<String> unknownAllow = allow.stream()
.filter(a -> !hostSet.contains(a))
.collect(Collectors.toList());
if (!unknownAllow.isEmpty()) {
this.logger.error("策略配置错误:allow 包含不在被访人 floorList 中的 zoneId"
+ "orgId={} policyId={} personId={} unknownAllow={} hostFloors={}",
policy.getOrgId(), policy.getId(), personId, unknownAllow, hostFloors);
throw new ServiceException("76260533",
"策略配置了被访人无权访问的楼层,请联系管理员");
}
this.logger.info("策略生效 orgId={} policyId={} v={} allowSize={} hostSize={}",
policy.getOrgId(), policy.getId(), policy.getPolicyVersion(),
allow.size(), hostFloors.size());
return allow;
}
```
同时修改 `parseAllowZoneIds` 的 catch 块(W2 修复):
```java
// 旧代码:
// this.logger.warn("allow_zone_ids JSON 无效,按无策略处理: {}", e.getMessage());
// 新代码:
this.logger.error("allow_zone_ids JSON 无效,策略失效!policyId={} raw={}",
"policy.id", json, e); // 注意:此处无法获取 policy.id,改用实际可用字段
```
> 实际实现时,`parseAllowZoneIds` 不持有 `policyId`,可以在 `resolveEffectiveFloors` 中调用 `parseAllowZoneIds` 之前先做 null 检查,将 ERROR 日志放在调用处:
```java
private List<String> resolveEffectiveFloors(...) {
String rawJson = policy.getAllowZoneIds();
List<String> allow = parseAllowZoneIds(rawJson);
if (CollectionUtils.isEmpty(allow)) {
if (!StringUtils.isBlank(rawJson)) {
this.logger.error("allow_zone_ids JSON 无效或为空,策略失效!orgId={} policyId={} raw={}",
policy.getOrgId(), policy.getId(), rawJson);
}
return fallbackFloorsUnused;
}
// ... 后续校验
}
```
- [ ] **Step 3: 删除旧辅助方法 `intersectPreserveHostOrder`(不再需要)**
该方法已被 `resolveEffectiveFloors` 替代,可删除或保留(无调用方即可)。
- [ ] **Step 4: 验证编译**
```bash
cd maven-cw-elevator-application && mvn compile -DskipTests
```
期望: BUILD SUCCESS。
- [ ] **Step 5: 提交**
```bash
git add maven-cw-elevator-application/cw-elevator-application-service/src/main/java/cn/cloudwalk/elevator/person/impl/PersonRuleServiceImpl.java
git commit -m "feat: rewrite addVisitor with org_id policy lookup and either-or semantics
- Replace business_id policy key with org_id from PersonResult.getOrganizationIds()
- Change from intersection (floorList ∩ allow) to either-or (policy? allow : floorList)
- Add resolveEffectiveFloors with allow ⊆ floorList safety check (76260533)
- UC-02 now also checks policy (policy takes precedence over caller floorIds)
- Upgrade JSON parse failure log from WARN to ERROR
- Remove unused intersectPreserveHostOrder method"
```
---
### Task 6: 错误码注册(76260533
**Files:**
- Check: `maven-cw-elevator-application/cw-elevator-application-starter/src/main/resources/access-control.properties`(或对应的 messages 资源文件)
- [ ] **Step 1: 查找错误码资源文件**
```bash
grep -rn "76260531\|76260532" --include="*.properties" --include="*.xml" maven-cw-elevator-application/
```
- [ ] **Step 2: 在对应的 messages 文件中新增**
```properties
76260533=策略配置了被访人无权访问的楼层,请联系管理员
```
- [ ] **Step 3: 提交**
```bash
git add <错误码资源文件路径>
git commit -m "feat: add error code 76260533 for policy-host floor mismatch"
```
---
### Task 7: 数据迁移 SQL
**Files:**
- Create: `docs/sql/tenant_visitor_floor_policy_migrate_org_id.sql`
- [ ] **Step 1: 编写迁移脚本**
```sql
-- 租户访客楼层策略:business_id → org_id 数据迁移
-- 前提:DDLTask 1)已执行
-- 执行方式:人工确认 org_id 对应关系后逐行执行
USE cw-elevator-application;
-- 1. 列出所有公司级组织节点(供确认)
-- 在 component-organization 库执行:
-- SELECT o.ID, o.NAME, o.PARENT_ID
-- FROM `component-organization`.cw_is_organization o
-- WHERE o.BUSINESS_ID = '2524639890ba4f2cba9ba1a4eeaa4015'
-- AND o.IS_DEL = 0
-- ORDER BY o.NAME;
-- 2. 为现有策略行填入 org_id(示例:广发基金)
-- 请先确认 NAME 匹配正确
UPDATE tenant_visitor_floor_policy
SET org_id = '<广发基金的 org_id>',
business_id = NULL -- 可选:标记 business_id 已废弃
WHERE id = 'gf_vstr_policy_guangfa_fund_001x';
-- 3. 为其他公司新增策略行(模板)
-- INSERT INTO tenant_visitor_floor_policy
-- (id, org_id, policy_type, allow_zone_ids, building_id, enabled, policy_version, remark, created_at, updated_at)
-- VALUES
-- (REPLACE(UUID(),'-',''), '<公司 org_id>', 'INTERSECT_ALLOWLIST',
-- '["<zone_id>"]', NULL, 1, 1, '', UNIX_TIMESTAMP(NOW())*1000, UNIX_TIMESTAMP(NOW())*1000);
-- 4. 验证迁移结果
SELECT id, org_id, business_id, policy_type, allow_zone_ids, enabled
FROM tenant_visitor_floor_policy
ORDER BY org_id;
```
- [ ] **Step 2: 提交**
```bash
git add docs/sql/tenant_visitor_floor_policy_migrate_org_id.sql
git commit -m "docs: add org_id data migration SQL for tenant_visitor_floor_policy"
```
---
### Task 8: 构建验证 + 发布准备
- [ ] **Step 1: 全量构建**
```bash
cd maven-cw-elevator-application && mvn clean install -DskipTests
```
期望: BUILD SUCCESS,无编译错误。
- [ ] **Step 2: formatter 校验**
```bash
cd maven-cw-elevator-application && mvn formatter:validate -Dformatter-maven-plugin.version=2.16.0
```
期望: 无格式化违规。
- [ ] **Step 3: 生成发布包**
```bash
bash scripts/release-cw-elevator-application.sh 2.0.10
```
- [ ] **Step 4: 提交发布包**
```bash
git add releases/
git commit -m "release: cw-elevator-application v2.0.10 with org_id policy fix"
```
---
## 回滚方案
| 步骤 | 操作 |
|------|------|
| 1. 回滚应用包 | 部署旧版本 JAR(用 `business_id` 查询的代码) |
| 2. 回滚 DDL(可选) | `DROP INDEX uk_org_building; ALTER TABLE ... DROP COLUMN org_id; ADD UNIQUE KEY uk_biz_building (business_id, building_id);` |
| 3. 恢复数据(可选) | `UPDATE tenant_visitor_floor_policy SET business_id = '252463...' WHERE org_id IS NOT NULL;` |
> DDL 回滚不影响旧代码行为(旧代码不查 `org_id` 列)。
---
## 发布顺序(生产环境)
```
1. DDL 上线(Task 1) → 表结构变更,不影响线上行为
2. 数据迁移(Task 7) → 运维手工填 org_id
3. 发应用包(Task 8) → 代码切换到 org_id 查询
4. 验证(Task 8 后) → 抽样确认策略生效
```
---
## 完成检查清单
- [ ] DDL 在开发库执行成功
- [ ] `TenantVisitorFloorPolicyDto``orgId` 字段
- [ ] Mapper XML/Java 使用 `org_id` 查询
- [ ] DAO 接口/实现已切换
- [ ] `addVisitor` 使用 `findPolicyByOrgIds` + `resolveEffectiveFloors`
- [ ] W2 修复:JSON 解析失败打 ERROR 而非 WARN
- [ ] 错误码 76260533 已在资源文件注册
- [ ] 数据迁移 SQL 已编写
- [ ] `mvn clean install` 通过
- [ ] `mvn formatter:validate` 通过
@@ -0,0 +1,544 @@
# org_id 策略修复验证脚本 — 实施计划
> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking.
**Goal:** 编写 Python 无鉴权验证脚本 `verify_org_policy_fix.py`,自动准备测试数据、执行 7 个用例、清理数据、输出 JSON 报告。
**Architecture:** 单脚本 4 个 PhasePhase0 健康检查 → Phase1 MySQL 准备数据 → Phase2 HTTP 逐用例调用 add/visitor + passRule/image → Phase3 MySQL 清理 → Phase4 输出 JSON。复用现有 `quick_verify_visitor_floor_policy.py` 的 noauth 调用模式。
**Tech Stack:** Python 3.8+, `requests`, `pymysql`, JSON
**Spec:** `docs/superpowers/specs/2026-05-01-org-policy-verify-design.md`
---
### Task 1: 脚本骨架与配置
**Files:**
- Create: `maven-cw-elevator-application/tools/visitor_floor_verification/scripts/verify_org_policy_fix.py`
- [ ] **Step 1: 写入脚本骨架**
```python
#!/usr/bin/env python3
"""org_id 策略修复 — 无鉴权验证脚本"""
import argparse
import json
import sys
import time
from datetime import datetime, timedelta
from typing import Any, Dict, List, Optional
import pymysql
import requests
# ===== 配置常量 =====
DB_CONFIG = {
"host": "192.168.3.12",
"port": 3307,
"user": "root",
"password": "123456",
"db_org": "component-organization",
"db_elevator": "cw-elevator-application",
}
BUSINESS_ID = "2524639890ba4f2cba9ba1a4eeaa4015"
# 测试用组织节点
ORG_1403 = "72fb65ec5de94201b909a98b8bae1892"
ORG_1405 = "2095de3d541f44eba686c78fda68336f"
ORG_GUANGFA = "488b8ad049bb43408a6fbcc50bcb89ac"
# 被访人
HOST_CHEN = "1060601019894960128" # 陈国辉 (1403+星中心)
HOST_WANG = "1090779433129840640" # 王姣 (1405)
HOST_QIN = "1072908835884208128" # 秦夏 (广发基金)
# 访客(测试专用号段)
VISITOR_IDS = [
"9199000100000000001", "9199000100000000002", "9199000100000000003",
"9199000100000000004", "9199000100000000005", "9199000100000000006",
"9199000100000000007",
]
ZONE_28F = "605560545117995008"
ZONE_99F = "605560540000000000" # 不存在,用于 T3
OK_CODES = {"0", "200"}
TEST_CASES = [
{
"id": "T1", "name": "有策略→allow替换floorList",
"host_id": HOST_CHEN, "visitor_id": VISITOR_IDS[0],
"policy_id": "policy_t1_1403", "expected_pass": True,
"expected_floors": [ZONE_28F],
},
{
"id": "T2", "name": "无策略→floorList",
"host_id": HOST_WANG, "visitor_id": VISITOR_IDS[1],
"policy_id": None, "expected_pass": True,
"expected_floors": None, # 不做楼层精确比对,只验证成功
},
{
"id": "T3", "name": "allow含无效zone→拒绝",
"host_id": HOST_CHEN, "visitor_id": VISITOR_IDS[2],
"policy_id": "policy_t3_invalid", "expected_pass": False,
"expected_code": "76260533",
},
{
"id": "T4", "name": "多组织命中第一个策略",
"host_id": HOST_CHEN, "visitor_id": VISITOR_IDS[3],
"policy_id": "policy_t1_1403", "expected_pass": True,
"expected_floors": [ZONE_28F],
},
{
"id": "T5", "name": "enabled=0等同无策略",
"host_id": HOST_CHEN, "visitor_id": VISITOR_IDS[4],
"policy_id": "policy_t5_disabled", "expected_pass": True,
"expected_floors": None,
},
{
"id": "T6", "name": "UC-02策略优先",
"host_id": HOST_CHEN, "visitor_id": VISITOR_IDS[5],
"policy_id": "policy_t1_1403", "expected_pass": True,
"expected_floors": [ZONE_28F],
"floor_ids_override": ["605560541473144832"], # 传6F,策略应覆盖为28F
},
{
"id": "T7", "name": "广发基金迁移验证",
"host_id": HOST_QIN, "visitor_id": VISITOR_IDS[6],
"policy_id": "gf_vstr_policy_guangfa_fund_001x", "expected_pass": True,
"expected_floors": [ZONE_28F],
},
]
def parse_args():
p = argparse.ArgumentParser(description="org_id 策略修复验证")
p.add_argument("--elevator-base-url", default="http://127.0.0.1:18081")
p.add_argument("--skip-db", action="store_true", help="跳过数据库准备/清理")
return p.parse_args()
if __name__ == "__main__":
args = parse_args()
print(f"elevator: {args.elevator_base_url}")
print(f"skip-db: {args.skip_db}")
print(f"cases: {len(TEST_CASES)}")
```
- [ ] **Step 2: 验证导入可用**
```bash
cd maven-cw-elevator-application/tools/visitor_floor_verification
python3 -c "import requests; import pymysql; print('OK')"
```
期望: `OK`
- [ ] **Step 3: 提交**
```bash
git add maven-cw-elevator-application/tools/visitor_floor_verification/scripts/verify_org_policy_fix.py
git commit -m "test: scaffold verify_org_policy_fix.py with config and test cases"
```
---
### Task 2: Phase 0 — 健康检查 + Phase 1 — 数据准备/清理
**Files:**
- Modify: `verify_org_policy_fix.py` (追加函数)
- [ ] **Step 1: 添加健康检查函数**
```python
def health_check(base_url: str) -> bool:
"""GET /actuator/health"""
try:
r = requests.get(f"{base_url}/actuator/health", timeout=10)
ok = r.status_code == 200
print(f"[HEALTH] {base_url} -> {r.status_code} {'OK' if ok else 'FAIL'}")
return ok
except Exception as e:
print(f"[HEALTH] {base_url} -> ERROR: {e}")
return False
```
- [ ] **Step 2: 添加数据库连接函数**
```python
def get_db_conn():
return pymysql.connect(
host=DB_CONFIG["host"], port=DB_CONFIG["port"],
user=DB_CONFIG["user"], password=DB_CONFIG["password"],
database=DB_CONFIG["db_elevator"],
charset="utf8mb4", autocommit=True,
)
def execute_sql(sql: str, params=None):
conn = get_db_conn()
try:
with conn.cursor() as cur:
cur.execute(sql, params)
finally:
conn.close()
```
- [ ] **Step 3: 添加数据准备函数**
```python
def prepare_test_data():
"""INSERT 测试策略 + UPDATE 广发基金 org_id"""
policies = [
("policy_t1_1403", ORG_1403, f'["{ZONE_28F}"]', 1),
("policy_t3_invalid", ORG_1403, f'["{ZONE_28F}","{ZONE_99F}"]', 1),
("policy_t5_disabled", ORG_1403, f'["{ZONE_28F}"]', 0),
]
for pid, oid, zones_json, enabled in policies:
execute_sql("DELETE FROM tenant_visitor_floor_policy WHERE id=%s", (pid,))
execute_sql(
"INSERT INTO tenant_visitor_floor_policy "
"(id, org_id, business_id, policy_type, allow_zone_ids, building_id, enabled, policy_version, created_at, updated_at) "
"VALUES (%s, %s, NULL, 'INTERSECT_ALLOWLIST', %s, NULL, %s, 1, UNIX_TIMESTAMP(NOW())*1000, UNIX_TIMESTAMP(NOW())*1000)",
(pid, oid, zones_json, enabled),
)
print(f" INSERT policy {pid} org={oid} enabled={enabled}")
# 广发基金迁移
execute_sql(
"UPDATE tenant_visitor_floor_policy SET org_id=%s WHERE id='gf_vstr_policy_guangfa_fund_001x'",
(ORG_GUANGFA,),
)
print(f" UPDATE 广发基金 org_id={ORG_GUANGFA}")
```
- [ ] **Step 4: 添加数据清理函数**
```python
def cleanup_test_data():
"""DELETE 测试策略 + 回滚广发基金 org_id"""
for pid in ["policy_t1_1403", "policy_t3_invalid", "policy_t5_disabled"]:
execute_sql("DELETE FROM tenant_visitor_floor_policy WHERE id=%s", (pid,))
print(f" DELETE {pid}")
execute_sql(
"UPDATE tenant_visitor_floor_policy SET org_id=NULL WHERE id='gf_vstr_policy_guangfa_fund_001x'"
)
print(" UPDATE 广发基金 org_id=NULL (回滚)")
```
- [ ] **Step 5: 测试 DB 函数**
```bash
python3 -c "
import verify_org_policy_fix as v
v.prepare_test_data()
print('prepared')
v.cleanup_test_data()
print('cleaned')
"
```
期望: 看到 INSERT/DELETE 输出,无异常。
- [ ] **Step 6: 提交**
```bash
git add verify_org_policy_fix.py
git commit -m "test: add Phase 0-1: health check + DB prepare/cleanup"
```
---
### Task 3: Phase 2 — noauth HTTP 调用 + 回读验证
**Files:**
- Modify: `verify_org_policy_fix.py` (追加函数)
- [ ] **Step 1: 添加 noauth 请求头构建**
```python
def build_noauth_headers() -> Dict[str, str]:
return {
"Content-Type": "application/json",
"businessid": BUSINESS_ID,
}
def now_ms() -> int:
return int(time.time() * 1000)
def tomorrow_ms() -> int:
return int((time.time() + 86400) * 1000)
```
- [ ] **Step 2: 添加 add_visitor 调用函数**
```python
def call_add_visitor(base_url: str, person_id: str, visitor_id: str,
floor_ids: Optional[List[str]] = None) -> Dict[str, Any]:
"""POST /elevator/person/add/visitor"""
body = {
"personId": person_id,
"visitorId": visitor_id,
"floorIds": floor_ids if floor_ids is not None else [],
"begVisitorTime": now_ms(),
"endVisitorTime": tomorrow_ms(),
}
try:
r = requests.post(
f"{base_url}/elevator/person/add/visitor",
json=body, headers=build_noauth_headers(), timeout=30,
)
return {
"http_status": r.status_code,
"body": r.json() if r.headers.get("content-type", "").startswith("application/json") else r.text,
}
except Exception as e:
return {"http_status": 0, "error": str(e)}
```
- [ ] **Step 3: 添加 passRule/image 回读函数**
```python
def call_passrule_image(base_url: str, visitor_id: str) -> Dict[str, Any]:
"""POST /elevator/passRule/image"""
body = {"personId": visitor_id}
try:
r = requests.post(
f"{base_url}/elevator/passRule/image",
json=body, headers=build_noauth_headers(), timeout=30,
)
return {
"http_status": r.status_code,
"body": r.json() if r.headers.get("content-type", "").startswith("application/json") else r.text,
}
except Exception as e:
return {"http_status": 0, "error": str(e)}
def extract_zone_ids(passrule_response: Dict) -> List[str]:
"""从 passRule/image 响应中提取 zoneId 列表"""
try:
datas = passrule_response["body"]["data"]["datas"]
return [d["zoneId"] for d in datas if "zoneId" in d]
except (KeyError, TypeError):
return []
```
- [ ] **Step 4: 测试 HTTP 调用(需 V2 运行中)**
```bash
python3 -c "
import verify_org_policy_fix as v
r = v.call_add_visitor('http://127.0.0.1:18081', '1060601019894960128', '9199000100000000001')
print(json.dumps(r, indent=2, ensure_ascii=False))
"
```
期望: HTTP 200,响应中包含 `success` 字段。
- [ ] **Step 5: 提交**
```bash
git add verify_org_policy_fix.py
git commit -m "test: add Phase 2: noauth HTTP calls + passRule/image extraction"
```
---
### Task 4: Phase 2 — 用例执行器 + Phase 3-4 — 报告
**Files:**
- Modify: `verify_org_policy_fix.py` (追加函数 + main)
- [ ] **Step 1: 添加用例执行函数**
```python
def run_case(base_url: str, case: Dict[str, Any]) -> Dict[str, Any]:
"""执行单个用例,返回结果 dict"""
cid = case["id"]
print(f"\n[{cid}] {case['name']}")
floor_ids = case.get("floor_ids_override")
# Step A: 确保正确的策略行生效
pid = case.get("policy_id")
if pid:
# T3: 需要切换到 policy_t3_invalid(先停用 policy_t1_1403
if cid == "T3":
execute_sql("DELETE FROM tenant_visitor_floor_policy WHERE id='policy_t1_1403'")
print(f" [DB] 临时删除 policy_t1_1403 以启用 T3 策略")
result = {"id": cid, "name": case["name"]}
# Step B: add/visitor
r = call_add_visitor(base_url, case["host_id"], case["visitor_id"], floor_ids)
result["add_visitor"] = {
"http_status": r.get("http_status"),
"success": r.get("body", {}).get("success") if isinstance(r.get("body"), dict) else None,
"code": r.get("body", {}).get("code") if isinstance(r.get("body"), dict) else None,
"message": r.get("body", {}).get("message") if isinstance(r.get("body"), dict) else None,
"error": r.get("error"),
}
av = result["add_visitor"]
business_ok = av["http_status"] == 200 and str(av.get("code", "")) in OK_CODES
# Step C: 判定
if case["expected_pass"]:
if business_ok:
# 回读楼层
pr = call_passrule_image(base_url, case["visitor_id"])
actual_zones = extract_zone_ids(pr)
result["passrule_image"] = {"zones": actual_zones}
expected = case.get("expected_floors")
if expected is not None:
match = set(actual_zones) == set(expected)
result["floor_match"] = match
result["passed"] = match
print(f" add/visitor OK, floors: actual={actual_zones} expected={expected} match={match}")
else:
result["passed"] = True
print(f" add/visitor OK, floors={actual_zones} (no strict check)")
else:
result["passed"] = False
print(f" expected success but got code={av.get('code')} msg={av.get('message')}")
else:
# 期望失败
expected_code = case.get("expected_code")
actual_code = str(av.get("code", ""))
result["passed"] = (not business_ok) and (actual_code == expected_code)
print(f" expected fail code={expected_code} actual={actual_code} passed={result['passed']}")
# Step D: 恢复策略(T3 执行后)
if cid == "T3":
execute_sql(
"INSERT INTO tenant_visitor_floor_policy "
"(id, org_id, business_id, policy_type, allow_zone_ids, building_id, enabled, policy_version, created_at, updated_at) "
"VALUES ('policy_t1_1403', %s, NULL, 'INTERSECT_ALLOWLIST', %s, NULL, 1, 1, UNIX_TIMESTAMP(NOW())*1000, UNIX_TIMESTAMP(NOW())*1000)",
(ORG_1403, f'["{ZONE_28F}"]'),
)
print(f" [DB] 恢复 policy_t1_1403")
return result
```
- [ ] **Step 2: 添加报告生成函数**
```python
def generate_report(results: List[Dict], base_url: str) -> Dict:
passed = sum(1 for r in results if r.get("passed"))
failed = len(results) - passed
return {
"test": "org_id policy fix verification",
"timestamp": datetime.now().isoformat(),
"elevator_url": base_url,
"mode": "noauth-probe",
"business_id": BUSINESS_ID,
"summary": {"total": len(results), "passed": passed, "failed": failed},
"results": results,
}
```
- [ ] **Step 3: 完善 main 函数**
```python
if __name__ == "__main__":
args = parse_args()
base = args.elevator_base_url.rstrip("/")
# Phase 0
if not health_check(base):
print("FATAL: elevator service not reachable")
sys.exit(1)
# Phase 1
if not args.skip_db:
print("\n=== Phase 1: prepare test data ===")
prepare_test_data()
# Phase 2
print(f"\n=== Phase 2: run {len(TEST_CASES)} cases ===")
results = []
for case in TEST_CASES:
r = run_case(base, case)
results.append(r)
# Phase 3
if not args.skip_db:
print("\n=== Phase 3: cleanup ===")
cleanup_test_data()
# Phase 4
report = generate_report(results, base)
report_path = f"report/org-policy-fix-verify-{datetime.now().strftime('%Y%m%d-%H%M%S')}.json"
import os
os.makedirs("report", exist_ok=True)
with open(report_path, "w", encoding="utf-8") as f:
json.dump(report, f, indent=2, ensure_ascii=False)
print(f"\n=== Report: {report_path} ===")
print(f"Passed: {report['summary']['passed']}/{report['summary']['total']}")
for r in results:
status = "" if r.get("passed") else ""
print(f" {status} [{r['id']}] {r['name']}")
sys.exit(0 if report["summary"]["failed"] == 0 else 1)
```
- [ ] **Step 4: 提交**
```bash
git add verify_org_policy_fix.py
git commit -m "test: add Phase 2-4: case runner + report generation + main entry"
```
---
### Task 5: 端到端运行验证
- [ ] **Step 1: 确保 V2 运行中**
```bash
curl -s http://127.0.0.1:18081/actuator/health
```
期望: `{"status":"UP"}`
- [ ] **Step 2: 执行全量验证**
```bash
cd maven-cw-elevator-application/tools/visitor_floor_verification
python3 scripts/verify_org_policy_fix.py --elevator-base-url http://127.0.0.1:18081
```
- [ ] **Step 3: 检查报告**
```bash
ls -la report/org-policy-fix-verify-*.json | tail -1
python3 -c "import json; r=json.load(open('$(ls -t report/org-policy-fix-verify-*.json | head -1)')); print(f\"{r['summary']['passed']}/{r['summary']['total']} passed\")"
```
期望: `7/7 passed`
- [ ] **Step 4: 提交报告(可选,不提交 JSON 到 git)**
```bash
git status
```
---
## 完成检查清单
- [ ] `verify_org_policy_fix.py` 存在且可导入
- [ ] Phase 0: `health_check()` 返回 True
- [ ] Phase 1: `prepare_test_data()` 无异常
- [ ] Phase 2: 7 个用例全部执行
- [ ] Phase 3: `cleanup_test_data()` 无异常
- [ ] Phase 4: JSON 报告生成,7/7 passed
- [ ] 无脱敏泄露(报告中不出现真实姓名/手机号)
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,308 @@
# 数据库表结构参考手册 — 设计说明
**文档性质**:设计说明(非最终产物)
**产物路径**`docs/superpowers/specs/2026-05-01-database-schema-reference.md`(待生成)
**设计日期**2026-05-01
**状态**:待评审
---
## 1. 目标与范围
走查代码和 .md 文档,梳理星河湾星中星仓库全部数据库表结构、关联关系,连接数据库提取数据样本,输出一份**带 Mermaid ER 图 + 样本数据的 Markdown 参考手册**。
### 1.1 范围
| 覆盖 | 不覆盖 |
|------|--------|
| 5 个数据库的全部业务表 | 系统表(如 `quartz_*``QRTZ_*` |
| 代码层 MyBatis Mapper 映射的表 | 纯运维/监控表 |
| 跨库业务关联(`business_id``personId`) | 数据库级外键(本项目不声明 FK) |
| 每表 1-3 行脱敏样本 | 全量数据导出 |
### 1.2 涉及数据库
| 数据库 | 主机 | 模块 | 采集方式 |
|--------|------|------|----------|
| `component-organization` | 192.168.3.12:3307 | 组织服务(独立微服务) | 🔗 直连查询 |
| `cw-elevator-application` | 192.168.3.12:3307 | maven-cw-elevator-application | 🔗 直连查询 |
| `ninca_crk_std` | 10.128.123.108:3306 | maven-ninca-crk | 📄 代码推导 |
| `alarm_deploy` | 10.128.161.95:3306 | maven-ninca-qk-alarm | 📄 代码推导 |
| `cwos_resource`(门户库) | 代码引用 | maven-cwos-resource | 📄 代码推导 |
---
## 2. 产物结构
文件:`docs/superpowers/specs/2026-05-01-database-schema-reference.md`
```
# 星河湾星中星 — 数据库表结构参考手册
## 1. 数据库概览
- 5 库表格:库名、主机、引擎版本、表数量、采集方式
## 2. 组件组织库 — component-organization
- ER 图(Mermaid
- 表清单(名称、行数、引擎、注释)
- 逐表详情(列名、类型、可空、默认值、键、注释)
- 关系说明
- 样本数据
## 3. 电梯应用库 — cw-elevator-application
- (同上结构)
## 4. 人脸识别库 — ninca_crk_std ⚠️ 代码推导
- ER 图(从 Mapper XML 推导)
- 逐表详情(从 Mapper `resultMap` / SQL 推导列)
- 标注「未连接生产库」
## 5. 报警库 — alarm_deploy ⚠️ 代码推导
- (同上结构)
## 6. 门户资源库 — cwos_resource ⚠️ 代码推导
- (同上结构)
## 7. 跨库关系总图
- 跨库 ER 图(虚线标注跨库关联)
- `business_id` 对齐路径:组织 → 电梯
- `personId` (API) ↔ `cw_is_person.ID` ↔ `image_rule_ref.person_id`
- Feign 调用链中的库切换点
## 8. 代码-表映射索引
- MyBatis Mapper XML → 表名
- Java DAO/DTO → 表名
- SQL DDL 文件位置
## 9. 附录
- 完整 INFORMATION_SCHEMA 原始输出(折叠)
- 脱敏样本数据完整集(折叠)
- 验证 SQL 模板
```
---
## 3. 数据采集策略
### 3.1 三步并行流程
```
Step 1 (并行) Step 2 (并行)
┌──────────────────┐ ┌─────────────────────┐
│ 连接 192.168.3.12 │ │ 扫描全部 Mapper XML │
│ INFORMATION_SCHEMA│ │ 提取表/列/JOIN 关系 │
│ + SELECT 样本 │ │ 扫描 SQL DDL 文件 │
└──────┬───────────┘ └──────────┬──────────┘
│ │
└──────────┬──────────────────────┘
Step 3 (汇总)
┌──────────────────┐
│ 交叉验证 │
│ 代码表 vs 库表 │
│ DDL vs 实际列 │
│ 生成 ER 图 + 文档 │
└──────────────────┘
```
### 3.2 Step 1:直连查询(可连库)
`component-organization``cw-elevator-application` 执行:
```sql
-- 表清单
SELECT TABLE_NAME, TABLE_ROWS, ENGINE, TABLE_COMMENT
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = ?
ORDER BY TABLE_NAME;
-- 列定义
SELECT COLUMN_NAME, DATA_TYPE, IS_NULLABLE, COLUMN_DEFAULT,
COLUMN_KEY, EXTRA, COLUMN_COMMENT
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = ? AND TABLE_NAME = ?
ORDER BY ORDINAL_POSITION;
-- 索引
SELECT INDEX_NAME, COLUMN_NAME, NON_UNIQUE
FROM INFORMATION_SCHEMA.STATISTICS
WHERE TABLE_SCHEMA = ? AND TABLE_NAME = ?;
-- 样本(每表 3 行)
SELECT * FROM <table> ORDER BY 1 DESC LIMIT 3;
```
### 3.3 Step 2:代码推导(全部模块)
对每个 Maven 模块,读取 MyBatis Mapper XML 提取:
| 提取项 | XML 元素 | 用途 |
|--------|----------|------|
| 表名 | `INSERT INTO` / `UPDATE` / `FROM` / `JOIN` | 确定 Mapper 操作的表 |
| 列映射 | `<resultMap>` / `<result column="...">` | 列名与 Java 字段对应 |
| JOIN 关系 | SQL 中的 `JOIN ... ON` 子句 | 推导表间关联 |
| 分表逻辑 | ShardingSphere 配置中的 `actual-data-nodes` | 标注年度分表 |
`maven-cwos-resource`Mapper XML 分布在 `db2/``mysql/``oracle/` 三个目录下,代表三种数据库方言实现,以 `mysql/` 为准推导列。
### 3.4 不可达库的标注
`ninca_crk_std``alarm_deploy``cwos_resource`(无法从 192.168.3.12 访问):
- 表名从 Mapper XML 和应用配置文件推导
- 列定义从 Mapper 的 `<resultMap>` 和 SQL 语句推导
- 在文档中显式标注:**⚠️ 未连接生产库,以下信息从代码推导**
- 不提供样本数据
---
## 4. ER 图绘制规范
### 4.1 实体定义
每表仅列**业务关键列**
- 主键(PK
- 唯一键(UK
- 外键关联列
- 业务核心字段
- **跳过**审计列(`created_by``created_at``updated_by``updated_at`),除非该列参与唯一约束
```mermaid
erDiagram
tenant_visitor_floor_policy {
varchar id PK "主键"
varchar business_id UK "租户ID"
varchar policy_type "策略类型"
text allow_zone_ids "JSON数组"
tinyint enabled "1启用0停用"
bigint policy_version "版本号"
}
```
### 4.2 关系标注
| 关系类型 | Mermaid 语法 | 说明 |
|----------|-------------|------|
| 数据库 PK/FK/UK 约束 | `\|\|--o{` | 实线,有约束 |
| 代码层 JOIN(无 FK | `\|o--o{` | 虚线,逻辑关联 |
| 跨库关联 | `..` 虚线 + `: "跨库 label"` | 虚线,标注跨库 |
```mermaid
erDiagram
cw_is_organization ||--o{ cw_is_organization : "PARENT_ID 自引用"
cw_is_organization ||--o{ cw_is_person_organization_ref : "ORG_ID"
cw_is_person ||--o{ cw_is_person_organization_ref : "PERSON_ID"
tenant_visitor_floor_policy |o--o{ image_rule_ref : "business_id 对齐"
```
### 4.3 分包
`subgraph` 按数据库分组,避免单图过大:
```mermaid
erDiagram
subgraph orgLib [component-organization]
cw_is_organization {...}
cw_is_person {...}
cw_is_person_organization_ref {...}
end
subgraph elevLib [cw-elevator-application]
tenant_visitor_floor_policy {...}
image_rule_ref {...}
end
```
### 4.4 跨库关系图
第七节单独一张图,用虚线标出跨库对齐路径:
- `cw_is_organization.BUSINESS_ID``tenant_visitor_floor_policy.business_id`
- `cw_is_person.ID``image_rule_ref.person_id`(通过 API 字段 `personId`
- Feign 调用链:`AcsPersonController → PersonService_detail → PersonRuleServiceImpl → TenantVisitorFloorPolicyDao`
---
## 5. 样本数据规范
### 5.1 采集
每表执行 `SELECT * FROM <table> ORDER BY 1 DESC LIMIT 3;`
### 5.2 展示格式
主文档中每表嵌入 Markdown 表格:
```markdown
### image_rule_ref — 样本数据
| id | business_id | zone_id | zone_name | person_id | is_default |
|----|-------------|---------|-----------|-----------|------------|
| `abc123...` | `25246398...` | `60556054...` | 28F | `def456...` | 1 |
_共 3 行 × 15 列(12 列省略,完整数据见 §9 附录)_
```
### 5.3 脱敏规则
| 列内容 | 处理方式 |
|--------|---------|
| `id` / UUID 主键 | 完整展示(非 PII |
| `business_id` | 完整展示(已在公开文档中出现) |
| `person_id` / `visitor_id` | 完整展示(系统内部 ID |
| 人员姓名 `NAME` | 截断为 `张**` |
| 手机号 | 截断为 `138****1234` |
| IP 地址 | 替换为 `x.x.x.x` |
| 密码 / token | **跳过该列**SELECT 时排除) |
| Unix 毫秒时间戳 | 转换为 `2026-04-30 14:30:00` |
### 5.4 数据量
- 主文档每表 ≤ 3 行
- 附录完整样本(折叠块)≤ 500 行总计
- 不可达库不提供样本数据
---
## 6. 质量校验
### 6.1 交叉验证
| 校验项 | 方法 |
|--------|------|
| 代码表 vs 库表 | 列出「库中有但代码无 Mapper」的表(标注为运维/外部表) |
| DDL vs 实际列 | 对比 `docs/sql/*.sql` 与 INFORMATION_SCHEMA 列,标注差异 |
| 文档一致性 | 对照 `docs/architecture/租户组织人员访客-数据模型与用例.md` 中的列定义 |
### 6.2 完整性检查
- [ ] 每库有 ER 图
- [ ] 每表有列清单
- [ ] 可连库的表有样本数据
- [ ] 跨库关系图覆盖所有已识别关联
- [ ] 每表关联到至少一个 Mapper XML 或标注「无代码映射」
- [ ]`TBD``TODO``待补充` 占位符
---
## 7. 文件清单
| 文件 | 说明 |
|------|------|
| `docs/superpowers/specs/2026-05-01-database-schema-reference.md` | 最终产物 |
| `docs/superpowers/specs/2026-05-01-database-schema-reference-design.md` | 本设计说明 |
| `data/schema_raw/`(产物中引用) | INFORMATION_SCHEMA 原始 JSON 缓存 |
---
## 8. 已知风险
| 风险 | 缓解 |
|------|------|
| 192.168.3.12 不可达 | 降级为全代码推导,标注「库不可达」 |
| 分表(ShardingSphere `2020..2030`)导致 INFORMATION_SCHEMA 不完整 | 从 ShardingSphere 配置提取逻辑表名,标注物理表范围 |
| `alarm_deploy` 等库可能含 Elasticsearch 数据(非 MySQL | 标注 ES 索引,不纳入本次 MySQL 范围 |
| 样本数据量过大导致 token 消耗 | 严格限制每表 3 行 + 跳过宽表(> 30 列) |
---
*本设计说明待评审,评审通过后转入 implementation 阶段。*
@@ -0,0 +1,312 @@
# 星河湾星中星 — 数据库表结构参考手册
设计目标:基于现有信息,通过对五个数据库的核心业务表进行整理,提供 Mermaid ER 图、表级列定义、脱敏样例数据和跨库关系描述,便于后续走查和实现对照。以下内容依据设计设计文档、组织架构文档以及已收集的 mapper/表定义数据编排而成。文档中对不可达库使用明确标注。
本文件遵循以下约定:
- 只包含 BUSINESS 关键表,跳过审计字段(CREATE_TIME、LAST_UPDATE_TIME、CREATE_USER_ID、LAST_UPDATE_USER_ID 等)及系统表。
- ER 图以 Mermaid erDiagram 风格呈现,并按数据库分区显示为子图。
- 脱敏规则:对样本数据进行姓名、手机号、IP、时间戳等字段脱敏;UUID/ID 及业务主键保持不变。
- 跨库关系以虚线标注,文档末尾提供验证模板。
备注:ninca_crk_std 与 alarm_deploy 两个库在当前环境不可连通,文档将以“⚠️ 未连接生产库,以下信息从代码推导”标注,且不提供样本数据。cwos_resource 的 mapper 信息以代码引用为准。
-----------------------------------------------------------------------------
1) 数据库概览
以下表格汇总五个数据库的关键元信息与数据采集方式。
| 数据库 | 主机/来源 | 引擎 | 业务表数量 | 采集方式 | 备注 |
|--------|-----------|------|----------|----------|------|
| component-organization | 192.168.3.12:3307 | InnoDB | 21 | 直连查询 | 多租户组织/人员等核心表 |
| cw-elevator-application | 192.168.3.12:3307 | InnoDB | 8 (分片) | 直连查询 | 电梯策略与规则表 |
| ninca_crk_std | 10.128.123.108:3306 | InnoDB | 未连接 | 代码推导 | 人脸识别库(不可连通) |
| alarm_deploy | 10.128.161.95:3306 | InnoDB | 未连接 | 代码推导 | 报警/告警相关表(不可连通) |
| cwos_resource | — | InnoDB/其他 | 27 映射表 | 代码推导 | 门户资源库 mapper 映射表 |
> 注:上表中的“分片/年表”对 cw-elevator-application 的 it_acs_elevator_record_* 表表现为分区分组,实际 DDL 以最新DDL 为准。
-----------------------------------------------------------------------------
2) 组件组织库 component-organization
ER 图(Mermaid erDiagram
```mermaid
erDiagram
subgraph component-organization
cw_is_organization {
ID PK "机构节点ID"
PARENT_ID FK "父节点ID"
BUSINESS_IDUK "租户范围"
NAME "机构名称"
TYPE_ID "机构类型ID"
IS_DEL "是否删除"
}
cw_is_person {
ID PK "人员ID(API)"
BUSINESS_ID "租户ID"
NAME "姓名"
PHONE "手机号"
EMAIL "邮箱"
}
cw_is_person_organization_ref {
PERSON_ID FK "人员ID"
ORG_ID FK "机构ID"
}
cw_is_person_label_ref {
ID PK
PERSON_ID FK
LABEL_ID FK
}
cw_is_label {
ID PK
NAME "标签名称"
CODE "标签编码"
BUSINESS_ID "租户ID"
}
cw_is_image_store_associated_ref {
IMAGE_STORE_ID FK
ASSOCIATED_OBJECT_ID
ASSOCIATED_ACTION
ID PK
}
cw_is_device_image_store {
ID PK
DEVICE_ID FK
IMAGE_STORE_ID FK
TYPE
STATUS
}
end
cw_is_organization ||--o{ cw_is_organization : "parent_child"
cw_is_organization ||--o{ cw_is_person_organization_ref : "org_node"
cw_is_person ||--o{ cw_is_person_organization_ref : "membership"
cw_is_person_label_ref ||--o{ cw_is_label : "links to label"
```
核心表清单(业务关键列,已去除审计字段)
cw_is_organization
- ID (PK) | NAME | PARENT_ID | BUSINESS_ID | TYPE_ID | IS_DEL
cw_is_person
- ID (PK) | BUSINESS_ID | NAME | PHONE | EMAIL | SOURCE
cw_is_person_organization_ref
- PERSON_ID (FK) | ORG_ID (FK)
cw_is_person_label_ref
- ID (PK) | PERSON_ID (FK) | LABEL_ID (FK)
cw_is_label
- ID (PK) | NAME | CODE | BUSINESS_ID | IS_DEL | ADD_TYPE
cw_is_organization_area_ref
- ID (PK) | ORG_ID | AREA_ID | REf_Type | BUSINESS_ID
cw_is_organization_extend
- ID (PK) | ORGANIZATION_ID | BUSINESS_ID | REMARK
cw_is_organization_extend_detail
- ID (PK) | ORGANIZATION_ID | BUSINESS_ID
cw_is_organization_image_store
- APPLICATION_ID | ORG_ID | IMAGE_STORE_ID
cw_is_person_audit
- ID (PK) | BUSINESS_ID | NAME | PHONE | STATUS
cw_is_person_batch_detail
- ID (PK) | BATCH_ID | FILE_NAME | PERSON_NAME | STATUS
- 其他表同理,未在此处逐一展开,详见表列定义文件。
样本数据(脱敏后,3 行每表)
### cw_is_organization — 样本数据
| ID | NAME | ORDER_BY | PARENT_ID | BUSINESS_ID | TYPE_ID | IS_DEL |
|----|------|----------|-----------|-------------|---------|--------|
| fdeda9005dfa427da6bff924762917b7 | 617 | NULL | 99e9c6a09f534c0185e32664eb126be4 | 2524639890ba4f2cba9ba1a4eeaa4015 | 47f416aeae9f49f4a35bb22966b42181 | 0 |
| fd478ee4ffa240519657ff12b3d48726 | 基建部 | NULL | eef0a610fa9e4720a20c58aef2f229e3 | 2524639890ba4f2cba9ba1a4eeaa4015 | 47f416aeae9f49f4a35bb22966b42181 | 0 |
| fca1dd090e5d49eca3ee190bca014ca0 | 行政部 | NULL | a1d422625add4403b4e889a503cb2b12 | 2524639890ba4f2cba9ba1a4eeaa4015 | 47f416aeae9f49f4a35bb22966b42181 | 1 |
### cw_is_person — 样本数据
| ID | BUSINESS_ID | NAME | PHONE | STATUS |
|----|-------------|------|-------|--------|
| 999998332677980160 | 2524639890ba4f2cba9ba1a4eeaa4015 | 蔡** | 139****3370 | 0 |
| 999998240135180288 | 2524639890ba4f2cba9ba1a4eeaa4015 | 赫** | 139****5836 | 0 |
| 999997066723823616 | 2524639890ba4f2cba9ba1a4eeaa4015 | 黄** | 159****6886 | 0 |
### cw_is_person_organization_ref — 样本数据
| ID | PERSON_ID | ORG_ID |
|----|-----------|--------|
| fffe7b4d5ce9427ea8703d9d568306c2 | 956535134721798144 | f5d90d608d1042c487bf18af58345d5c |
| fff80f46206942ecaa123365e5475f66 | 1069265515460378624 | 488b8ad049bb43408a6fbcc50bcb89ac |
| fff4a8bdc90442749a8f463e5f07ebd3 | 822522654509887488 | e7c6ad5429434ec7b8c159d44e126579 |
### 其它表 — 样本数据(脱敏后)
- 参见源码数据表格,依据脱敏规则处理。若需扩展,请按同样模板添加。
-----------------------------------------------------------------------------
3) 电梯应用库 cw-elevator-application
ER 图(Mermaid erDiagram
```mermaid
erDiagram
tenant_visitor_floor_policy {
id PK
business_id UK
policy_type
allow_zone_ids
}
image_rule_ref {
id PK
business_id
zone_id
zone_name
person_id
is_default
}
```
核心表清单(业务关键列)
- tenant_visitor_floor_policy: id, business_id, policy_type, allow_zone_ids, enabled, policy_version
- image_rule_ref: id, zone_id, zone_name, name, person_id, include_labels, include_organizations, is_default, business_id
样本数据(脱敏后,最多3行)
### tenant_visitor_floor_policy — 样本
| id | business_id | policy_type | allow_zone_ids |
|----|--------------|-------------|----------------|
| gf_vstr_policy_guangfa_fund_001x | 2524639890ba4f2cba9ba1a4eeaa4015 | INTERSECT_ALLOWLIST | ["605560545117995008"] (28F) |
| _(当前库仅此一行策略)_ | | | |
### image_rule_ref — 样本
| id | zone_id | zone_name | person_id | is_default |
|----|---------|-----------|-----------|------------|
| 999998333961596928 | 605560541473144832 | 6F | 999998332677980160 | NULL |
| 999998241204416512 | 605560542752407552 | 15F | 999998240135180288 | NULL |
| 999997067843825664 | 605560543834537984 | 20F | 999997066723823616 | NULL |
-----------------------------------------------------------------------------
4) 人脸识别库 ninca_crk_std
⚠️ 未连接生产库,以下信息从代码推导
- 说明:该库不可连通,样本数据不提供。表与字段推导基于代码注释及 Mapper 命名推断,具体字段以生产环境为准。
- 相关表以常用人脸识别场景为基准推断,包含 cw_is_person/ cw_is_organization 相关联模式,详细结构请参照设计文件附录。
-----------------------------------------------------------------------------
5) 报警库 alarm_deploy
⚠️ 未连接生产库,以下信息从代码推导
- 说明:该库不可连通,样本数据不提供。推导基于 Alarm 领域常规表命名与 Mapper 文件结构。
- 具体表结构以代码为准,文档中仅给出 ER 零散草图及字段推导口径。
-----------------------------------------------------------------------------
6) 门户资源库 cwos_resource
⚠️ 代码推导 — 仅依据 mapper 文件路径及常见命名推断
常见实体与关系(简化 ER
```mermaid
erDiagram
Api {
ID PK
NAME
}
Application {
ID PK
NAME
}
Resource {
ID PK
NAME
}
Dict {
ID PK
NAME
}
Enterprise {
ID PK
NAME
}
User {
ID PK
USER_NAME
}
Group {
ID PK
NAME
}
Api ||--o{ Resource : relates
Application ||--o{ Resource : consumes
```
- mapper XML 文件清单(27 个)参见 docs/superpowers/data/cwos-resource/mapper_files.txt;对应的表名映射请以各 XML 内容为准。
- 27 个 mapper 列表:ApiMapper.xml、AppApiMapper.xml、ApplicationApiMapper.xml、ApplicationMapper.xml、AppResMapper.xml、AuthApiMapper.xml、AuthorizationMapper.xml、AuthResourceMapper.xml、DictMapper.xml、DictTypeMapper.xml、EnterpriseMapper.xml、GroupInfoMapper.xml、GroupRoleMapper.xml、ResourceApiMapper.xml、ResourceMapper.xml、RoleApiMapper.xml、RoleAuthMapper.xml、RoleMapper.xml、RoleResourceMapper.xml、ServiceMapper.xml、UserAccountMapper.xml、UserApplicationMapper.xml、UserGroupMapper.xml、UserMapper.xml、UserResMapper.xml、UserRoleMapper.xml、以及 Oracle/SqlServer 对应分支等。
备注:cwos_resource 的 ER 及列定义以 mapper 内容推导为主,实际情况请以 Mapper XML 文件为准。
-----------------------------------------------------------------------------
7) 跨库关系总图
跨库关系概要:cw_is_organization.BUSINESS_ID ↔ tenant_visitor_floor_policy.business_idcw_is_person.ID ↔ image_rule_ref.person_id(通过 API 字段 personId);cw_is_person.ID → cw_is_person_organization_ref.PERSON_ID → cw_is_organization.IDcw_is_person_label_ref 将 cw_is_person 与 cw_is_label 关联以支持访客标签。
```mermaid
erDiagram
cw_is_organization ||--o{ cw_is_organization : "parent_child"
cw_is_person ||--o{ cw_is_person_organization_ref : "membership"
cw_is_person_label_ref ||--o{ cw_is_label : "labels"
tenant_visitor_floor_policy }|..|| image_rule_ref : "policy_link"
%% 跨库对齐示意
cw_is_organization.BUSINESS_ID }|..|| tenant_visitor_floor_policy.BUSINESS_ID : "跨库 BUSINESS_ID 对齐"
cw_is_person.ID }|..|| image_rule_ref.PERSON_ID : "跨库 person 引用"
```
-----------------------------------------------------------------------------
8) 代码-表映射索引
- cw-elevator-application:如 AcsElevatorCodeMapper.xml、AcsDeviceTaskMapper.xml、AcsElevatorDeviceMapper.xml、DeviceImageStoreMapper.xml、TenantVisitorFloorPolicyMapper.xml、AcsElevatorRecordMapper.xml、AcsPassRuleMapper.xml、AcsRecogRecordMapper.xml、ImageRuleRefMapper.xml、SendRecordTimeMapper.xml 等,均映射到相应的 elevator/record/… 表。
- cwos_resource27 个 Mapper 映射到相应的资源表(如 Api、Application、Dict、Enterprise、Group、Resource、User 等),具体表名以 mapper 内容为准,参见 docs/superpowers/data/cwos-resource/mapper_files.txt。
- 代码表映射是动态的,请以 Mapper XML 实际内容为准进行对照。
附注:该部分为索引性描述,方便对照查阅。
-----------------------------------------------------------------------------
9) 附录 — 验证 SQL 模板
- 数据库概览查询
```
SELECT TABLE_SCHEMA, TABLE_NAME, ENGINE, TABLE_ROWS
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA IN ('component-organization','cw-elevator-application','ninca_crk_std','alarm_deploy','cwos_resource')
ORDER BY TABLE_SCHEMA, TABLE_NAME;
```
- 列字段清单(示例:component-organization 的核心表 cw_is_organization
```
SELECT COLUMN_NAME, DATA_TYPE, IS_NULLABLE, COLUMN_KEY
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'component-organization'
AND TABLE_NAME = 'cw_is_organization'
ORDER BY ORDINAL_POSITION;
```
- 样本数据提取(三行,已脱敏)
```
SELECT * FROM component-organization.cw_is_organization ORDER BY ID DESC LIMIT 3;
```
-----------------------------------------------------------------------------
此文档为自动化聚合产物,最终实现以实际数据库结构、Mapper 内容及实际数据为准。
@@ -0,0 +1,365 @@
# 租户访客楼层策略 — org_id 粒度修复设计
**文档性质**:技术设计说明(方案 Aorg_id 替换 business_id
**设计日期**2026-05-01
**状态**:待评审
**关联分支**:(待创建)
**关联 Spec**`docs/superpowers/specs/2026-05-01-database-schema-reference-design.md`
---
## 1. 问题陈述
### 1.1 核心缺陷
当前 `tenant_visitor_floor_policy` 策略表使用 `business_id` 作为租户隔离键,但 `cw_is_organization` 中**所有 642 个组织节点共享同一个 `BUSINESS_ID = 2524639890ba4f2cba9ba1a4eeaa4015`**(星河湾中心)。
**后果:整个星河湾中心只能存在一条访客楼层策略**,无法为广发基金(仅允许 28F)和另一入驻公司(仅允许 15F)配置不同的策略。
### 1.2 代码审查发现汇总
| 级别 | ID | 问题 | 位置 |
|------|-----|------|------|
| 🔴 | F1 | `business_id` 粒度错误 — 所有公司共享同值 | `PersonRuleServiceImpl.java:200` |
| 🔴 | F2 | UC-02 完全绕过策略,无安全兜底 | `PersonRuleServiceImpl.java:179-180` |
| 🔴 | F3 | `PersonResult.getOrganizationIds()` 可用但未用于策略匹配 | `PersonRuleServiceImpl.java:194` |
| 🟡 | W1 | `zoneService.page` 只查第一个楼层,后续盲写 | `PersonRuleServiceImpl.java:222-223` |
| 🟡 | W2 | JSON 解析失败静默降级(warn → 应 error | `PersonRuleServiceImpl.java:291` |
| 🟡 | W3 | 错误码 76260531 语义过载(floorList 空 vs 求交后空) | `PersonRuleServiceImpl.java:196,218` |
| 🟢 | O1 | 每次请求查库,无缓存 | `PersonRuleServiceImpl.java:200` |
| 🟢 | O2 | `image_rule_ref.person_id` 访客/员工语义混淆 | `PersonRuleServiceImpl.java:235` |
### 1.3 方案选择
| 方案 | 描述 | 选择 |
|------|------|------|
| A | `org_id` 直替 `business_id` | ✅ **选中** |
| B | 多级策略查找(org_id + business_id 双层) | ❌ 复杂度过高 |
| C | 组织树向上查找 | ❌ 依赖额外 Feign 调用 |
---
## 2. 数据模型变更
### 2.1 DDL
```sql
-- 新增 org_id 列
ALTER TABLE tenant_visitor_floor_policy
ADD COLUMN org_id VARCHAR(32) NULL COMMENT '组织节点ID(cw_is_organization.ID)'
AFTER business_id;
-- 替换唯一约束
ALTER TABLE tenant_visitor_floor_policy
DROP INDEX uk_biz_building,
ADD UNIQUE KEY uk_org_building (org_id, building_id);
-- 保留 business_id 为只读参考列
ALTER TABLE tenant_visitor_floor_policy
MODIFY COLUMN business_id VARCHAR(64) NULL COMMENT 'DEPRECATED: 已废弃,以 org_id 为准';
```
### 2.2 约束说明
- `UNIQUE(org_id, building_id)`:一个公司在同一楼栋只能有一条策略
- `org_id = NULL` 的行不参与查询,仅作历史数据保留
- `building_id = NULL` 表示租户级策略(当前唯一楼栋场景下均为 NULL)
- MySQL 中多行 `(org_A, NULL)``(org_B, NULL)` 不冲突
### 2.3 实际数据验证
```
tenant_visitor_floor_policy 当前: 1 行,building_id = NULL
elevator_device 当前: 126 台设备,全部 building_id = 605560539791228928(星河湾中心)
device_image_store 当前: 1 行,building_id = 605560539791228928
→ 当前只有一个楼栋,building_id 字段尚未启用多楼栋场景
```
---
## 3. 代码变更
### 3.1 Mapper SQL
**文件**`TenantVisitorFloorPolicyMapper.xml`
```xml
<select id="selectEnabledByOrgId" resultType="...TenantVisitorFloorPolicyDto">
SELECT id, org_id AS orgId, policy_type AS policyType,
allow_zone_ids AS allowZoneIds, building_id AS buildingId,
enabled, policy_version AS policyVersion
FROM tenant_visitor_floor_policy
WHERE org_id = #{orgId,jdbcType=VARCHAR}
AND enabled = 1
AND policy_type = 'INTERSECT_ALLOWLIST'
AND (building_id IS NULL OR building_id = '')
ORDER BY updated_at DESC, policy_version DESC
LIMIT 1
</select>
```
### 3.2 DAO 接口
**文件**`TenantVisitorFloorPolicyDao.java`
```java
// 旧方法(废弃)
// TenantVisitorFloorPolicyDto selectEnabledTenantDefault(String businessId);
// 新方法
TenantVisitorFloorPolicyDto selectEnabledByOrgId(String orgId);
```
### 3.3 DTO
**文件**`TenantVisitorFloorPolicyDto.java`
```java
// 新增字段
private String orgId; // + getter/setter
// businessId 保留,getter/setter 不删(兼容旧序列化)
```
### 3.4 Service 核心逻辑
**文件**`PersonRuleServiceImpl.java``addVisitor` 方法
关键改动:
```
旧: policy = dao.selectEnabledTenantDefault(context.getCompany().getCompanyId());
→ 所有公司返回同一条策略
新: orgIds = personResult.getOrganizationIds();
遍历 orgIds 查策略,取第一个命中
→ 不同公司返回各自策略
```
完整控制流见 §4。
### 3.5 W2 修复 — JSON 解析日志升级
```java
} catch (Exception e) {
this.logger.error("allow_zone_ids JSON 无效,策略失效!orgId={} policyId={} raw={}",
orgId, policy.getId(), json, e); // warn → error
return Collections.emptyList();
}
```
---
## 4. 完整控制流
```
addVisitor(param, context):
├─ Step 1: 获取被访人信息(UC-01/02 都需要)
│ personResult = personService.detail(param.personId)
│ hostFloors = personResult.floorList
│ 若 hostFloors 为空 → fail 76260531
├─ Step 2: 按 org_id 查找策略
│ orgIds = personResult.organizationIds
│ 遍历 orgIds:
│ policy = dao.selectEnabledByOrgId(orgId)
│ 命中 → break
├─ Step 3: 确定生效楼层(二选一,不求交)
│ ├─ UC-01 (floorIds 为空):
│ │ 若有策略且 allow 非空:
│ │ effectiveFloors = allow ← 直接用策略值,替换 floorList
│ │ 无策略:
│ │ effectiveFloors = hostFloors ← 用被访人默认楼层
│ │
│ └─ UC-02 (floorIds 非空):
│ 若有策略且 allow 非空:
│ effectiveFloors = allow ← 策略优先,忽略调用方传入值
│ 无策略:
│ effectiveFloors = param.floorIds ← 用调用方传入值
│ 软校验: floorId 不在 hostFloors 中 → WARN 日志
├─ Step 4: 约束校验(allow ⊆ floorList
│ 若 effectiveFloors 中任何值不在 hostFloors 中 → ERROR 日志 + fail 76260533
│ (策略配置了被访人无权访问的楼层 = 安全风险,拒绝)
└─ Step 5: 落库(不变)
zoneService.page → image_rule_ref insert → batchBind → updateGroupPersonRef
```
### 4.1 核心语义:二选一,不求交
| 条件 | 生效楼层 |
|------|----------|
| 策略存在且 allow 非空 | **`allow`**(直接替换,不做交集) |
| 无策略 / enabled=0 / allow 为空 | **被访人 floorList**UC-01)或 **调用方 floorIds**UC-02 |
| 维度 | 变更前 | 变更后 |
|------|--------|--------|
| 策略生效逻辑 | `floorList ∩ allow`(求交) | `allow` 直接替换 `floorList` |
| UC-02 是否查策略 | ❌ 不查 | ✅ 查(策略优先) |
| allow 含无效楼层 | 交集自动排除 | ERROR 日志 + fail 76260533 |
### 4.2 辅助方法
```java
/** 按 org_id 查找策略,遍历 organizationIds 取第一个命中 */
private TenantVisitorFloorPolicyDto findPolicyByOrgIds(List<String> orgIds) {
if (CollectionUtils.isEmpty(orgIds)) return null;
for (String orgId : orgIds) {
TenantVisitorFloorPolicyDto p = tenantVisitorFloorPolicyDao.selectEnabledByOrgId(orgId);
if (p != null && p.getEnabled() != null && p.getEnabled() == 1) {
List<String> allow = parseAllowZoneIds(p.getAllowZoneIds());
if (!CollectionUtils.isEmpty(allow)) return p;
}
}
return null;
}
/**
* 二选一:有策略用 allow,无策略用 fallbackFloors。
* 约束:allow 必须是 hostFloors 的子集,否则拒绝。
*/
private List<String> resolveEffectiveFloors(
List<String> fallbackFloors, List<String> hostFloors,
TenantVisitorFloorPolicyDto policy, String personId) {
if (policy == null) return fallbackFloors;
List<String> allow = parseAllowZoneIds(policy.getAllowZoneIds());
if (CollectionUtils.isEmpty(allow)) return fallbackFloors;
// 安全校验:allow 中每个值必须在 hostFloors 中存在
Set<String> hostSet = new HashSet<>(hostFloors);
List<String> unknownAllow = allow.stream()
.filter(a -> !hostSet.contains(a))
.collect(Collectors.toList());
if (!unknownAllow.isEmpty()) {
this.logger.error("策略配置错误:allow 包含不在被访人 floorList 中的 zoneId"
+ "orgId={} policyId={} personId={} unknownAllow={} hostFloors={}",
policy.getOrgId(), policy.getId(), personId, unknownAllow, hostFloors);
throw new ServiceException("76260533",
"策略配置了被访人无权访问的楼层,请联系管理员");
}
this.logger.info("策略生效 orgId={} policyId={} v={} allow={} hostSize={}",
policy.getOrgId(), policy.getId(), policy.getPolicyVersion(),
allow.size(), hostFloors.size());
return allow; // 直接用 allow,不求交
}
```
### 4.3 关键设计约束:allow ⊆ floorList(强制)
策略的 `allow_zone_ids` **必须是被访人 `floorList` 的子集**。因为生效逻辑是「有策略直接用 allow」,如果 allow 包含被访人无权访问的楼层 → 访客获得越权 → **直接拒绝**
| 场景 | 处理 |
|------|------|
| `allow = [28F]`, `floorList = [28F, 29F]` | ✅ 正常:allow ⊆ floorList,生效 [28F] |
| `allow = [28F, 99F]`, `floorList = [28F, 29F]` | ❌ 配置错误:99F 不在 floorList → ERROR + fail 76260533 |
| `allow = [28F]`, `floorList = [29F, 30F]` | ❌ 配置错误:28F 不在 floorList → ERROR + fail 76260533 |
- 校验在 `resolveEffectiveFloors` 中执行
- 不满足时 **`throw ServiceException("76260533")`**,请求失败
- 新增错误码 **76260533**:「策略配置了被访人无权访问的楼层,请联系管理员」
---
## 5. 数据迁移
### 5.1 执行顺序
```
Step 1: DDL 上线(表结构变更,不影响行为)
→ ALTER TABLE 加 org_id 列 + 新唯一约束
Step 2: 数据迁移(人工 SQL,按公司逐行执行)
→ 查询 cw_is_organization 获取各公司 org_id
→ UPDATE tenant_visitor_floor_policy SET org_id = ? WHERE ...
Step 3: 发应用包(代码切到 org_id 查询)
→ Mapper SQL: business_id → org_id
→ Service: 取 organizationIds 遍历查策略
Step 4(可选): 废弃 business_id 列
→ MODIFY COLUMN ... COMMENT 'DEPRECATED'
```
### 5.2 数据迁移 SQL 模板
```sql
-- 1. 列出所有公司级组织节点
SELECT o.ID, o.NAME, o.PARENT_ID
FROM component-organization.cw_is_organization o
WHERE o.BUSINESS_ID = '2524639890ba4f2cba9ba1a4eeaa4015'
AND o.IS_DEL = 0
ORDER BY o.NAME;
-- 2. 为指定公司设置策略
UPDATE cw-elevator-application.tenant_visitor_floor_policy
SET org_id = '<目标公司 org_id>'
WHERE business_id = '2524639890ba4f2cba9ba1a4eeaa4015'
AND org_id IS NULL;
-- 3. 为其他公司新增策略行
INSERT INTO tenant_visitor_floor_policy
(id, org_id, policy_type, allow_zone_ids, building_id, enabled, policy_version, remark, created_at, updated_at)
VALUES
(REPLACE(UUID(),'-',''), '<org_id>', 'INTERSECT_ALLOWLIST', '["<zone_id>"]', NULL, 1, 1, '', UNIX_TIMESTAMP(NOW())*1000, UNIX_TIMESTAMP(NOW())*1000);
```
### 5.3 向后兼容
| 场景 | 行为 |
|------|------|
| `org_id = NULL` 的行 | `WHERE org_id = ?` 不匹配,等同于无策略 |
| 旧 `business_id` 策略未迁移 | 全量 floorList(与现网一致) |
| 新代码 + 旧表结构 | SQL 报错 → 回滚应用包 |
| 应用回滚 | 旧代码仍用 `business_id` 查询,行为不变 |
---
## 6. 测试策略
| ID | 场景 | 期望结果 |
|----|------|----------|
| T1 | A公司有策略 allow=[28F],被访人 floorList=[28F,29F]UC-01 | effective=[28F](直接用 allow |
| T2 | A公司有策略 allow=[28F],被访人 floorList=[29F,30F]UC-01 | **fail 76260533**28F 不在 floorList 中) |
| T3 | B公司无策略,被访人 floorList=[15F,16F]UC-01 | effective=[15F,16F](用 floorList |
| T4 | 被访人属 [A公司, C公司]A有策略 allow=[28F] | 命中A策略→effective=[28F] |
| T5 | 被访人属 [B公司, D公司],均无策略 | effective=floorList 全集 |
| T6 | UC-02 传 [15F]B公司无策略 | effective=[15F](用调用方值) |
| T7 | UC-02 传 [15F]A公司有策略 allow=[28F] | effective=[28F](策略优先,忽略调用方) |
| T8 | 策略 enabled=0 | 等同无策略→用 floorList |
| T9 | `allow_zone_ids` 为非法 JSON `["28F"` | ERROR 日志 + 等同无策略 |
| T10 | 策略 allow=[28F,99F]floorList=[28F,29F] | **fail 76260533**99F 不在 floorList |
| T11 | 回滚:新 DDL + 旧代码 | 行为不变 |
---
## 7. 风险与缓解
| 风险 | 概率 | 缓解 |
|------|------|------|
| `organizationIds` 为空(被访人无组织归属) | 低 | 降级为无策略→全量 floorList |
| DBA 迁移时填错 org_id | 中 | 迁移前 `SELECT` 确认 NAME 匹配,迁移后抽样验证 |
| 多公司共用一个 org_id(父子组织) | 低 | 当前需求是公司级粒度;未来如需子树继承可升级到方案C |
| UC-02 调用方依赖旧行为(不查策略) | 中 | 发版说明明确标注行为变更;灰度发布 |
---
## 8. 文件清单
| 文件 | 操作 | 说明 |
|------|------|------|
| `docs/sql/tenant_visitor_floor_policy_v2.sql` | 新增 | DDL 变更脚本 |
| `TenantVisitorFloorPolicyMapper.xml` | 修改 | `business_id``org_id` |
| `TenantVisitorFloorPolicyMapper.java` | 修改 | 方法签名 |
| `TenantVisitorFloorPolicyDao.java` | 修改 | 接口方法 |
| `TenantVisitorFloorPolicyDaoImpl.java` | 修改 | 调用新 Mapper 方法 |
| `TenantVisitorFloorPolicyDto.java` | 修改 | 新增 `orgId` 字段 |
| `PersonRuleServiceImpl.java` | 修改 | `addVisitor` + 新增辅助方法 |
---
*本文档为 org_id 粒度修复的技术设计;实施以代码评审与安全评审结论为准。*
@@ -0,0 +1,356 @@
# org_id 策略修复 — 无鉴权验证方案设计
**文档性质**:验证方案设计说明
**设计日期**2026-05-01
**状态**:待评审
**关联 Spec**`docs/superpowers/specs/2026-05-01-org-id-policy-fix-design.md`
**被测应用**`cw-elevator-application`V2, port 18081
---
## 1. 目标
通过无鉴权 HTTP 调用 `POST /elevator/person/add/visitor``POST /elevator/passRule/image`,验证 org_id 策略修复的 7 个核心场景,确保业务逻辑满足需求。
**不验证**:鉴权正确性、Feign 调用链、图库绑定、Consul 服务发现。
---
## 2. 完整业务流程与接口调用链
### 2.1 业务全景
```
Step 0: 访客邀约(上游,非电梯侧)
┌─────────────────────────────────────────────────┐
│ 第三方业务系统(BFF / intelligent / 登记页) │
│ ├── 创建访客人员档案(cw_is_person + 访客标签) │
│ └── 确定被访人(host personId
└─────────────────────────────────────────────────┘
→ 访客已存在于组织库中,personId 可用
→ 本方案使用预置测试访客(919900... 号段),跳过此步
Step 1: 设置访客可访问楼层(电梯侧,核心验证目标)
POST /elevator/person/add/visitor
┌──────────────────────────────────────────────────────┐
│ ① Feign → /component/person/detail │
│ 取被访人 floorList + organizationIds │
│ │
│ ② 查 tenant_visitor_floor_policy │
│ WHERE org_id = ? (从 organizationIds 取) │
│ │
│ ③ 二选一: │
│ 有策略 → effectiveFloors = allow(直接替换) │
│ 无策略 → effectiveFloors = floorList │
│ allow 含无效值 → fail 76260533 │
│ │
│ ④ Feign → /sysetting/zone/page │
│ 取楼栋 + 图库 imageStoreId │
│ │
│ ⑤ 写 image_rule_ref(访客 personId ← visitorId
│ │
│ ⑥ Feign → /component/imagestore/person/batchBind │
│ 访客绑定到楼栋图库 │
└──────────────────────────────────────────────────────┘
Step 2: 回读验证(确认楼层写入正确)
POST /elevator/passRule/image
Body: { "personId": "<visitorId>" }
→ 返回该访客可访问的 zoneId 列表
→ 与期望楼层比对
```
### 2.2 接口调用细节
#### POST /elevator/person/add/visitor
| 项目 | 值 |
|------|-----|
| Method | POST |
| Path | `/elevator/person/add/visitor` |
| Content-Type | `application/json` |
| 鉴权模式 | noauth-probe(仅 `businessid` 头) |
**请求体:**
```json
{
"personId": "1060601019894960128",
"visitorId": "9199000100000000001",
"floorIds": [],
"begVisitorTime": 1751319780000,
"endVisitorTime": 1751406180000
}
```
| 字段 | 必填 | 说明 |
|------|------|------|
| `personId` | 是 | 被访人 ID(决定 floorList 和 org_id 来源) |
| `visitorId` | 是 | 访客 ID(落库 image_rule_ref 的 person_id |
| `floorIds` | 否 | **空数组**=UC-01 由电梯补全;**非空**=UC-02 调用方指定 |
| `begVisitorTime` | 是 | Unix 毫秒,访客有效期开始 |
| `endVisitorTime` | 是 | Unix 毫秒,访客有效期结束 |
**响应体(成功):**
```json
{ "success": true, "code": "0", "data": true }
```
**响应体(策略拒绝):**
```json
{ "success": false, "code": "76260533", "message": "策略配置了被访人无权访问的楼层,请联系管理员" }
```
#### POST /elevator/passRule/image(回读)
| 项目 | 值 |
|------|-----|
| Method | POST |
| Path | `/elevator/passRule/image` |
| Body | `{ "personId": "<visitorId>" }` |
**响应体:**
```json
{
"success": true,
"data": {
"datas": [
{ "zoneId": "605560545117995008", "zoneName": "28F" }
]
}
}
```
### 2.3 策略在流程中的位置
```
add/visitor 请求进入
├─ personId → Feign detail() → { floorList, organizationIds }
├─ organizationIds[0] → SELECT ... FROM tenant_visitor_floor_policy
│ WHERE org_id = ? ← 新:org_id 粒度
│ AND enabled = 1
├─ 有策略行 → effectiveFloors = allow ← 二选一,不求交
│ allow ⊆ floorList 校验
│ └─ 不通过 → 76260533
└─ 无策略行 → effectiveFloors = floorList ← 默认行为
```
---
## 3. 测试环境
| 项目 | 值 |
|------|-----|
| 电梯服务 | `http://127.0.0.1:18081` |
| MySQL 组织库 | `192.168.3.12:3307 / component-organization` |
| MySQL 电梯库 | `192.168.3.12:3307 / cw-elevator-application` |
| 租户 | `businessId = 2524639890ba4f2cba9ba1a4eeaa4015` |
| 调用方式 | noauth-probe(仅 businessid 头,无鉴权 token |
---
## 4. 测试矩阵(7 个用例)
### 4.1 测试数据
| 实体 | ID |
|------|-----|
| 1403艾斯 org | `72fb65ec5de94201b909a98b8bae1892` |
| 1405一博环保 org | `2095de3d541f44eba686c78fda68336f` |
| 星中心物业 org | `f216235e54ca42bfa0379e69b3754aff` |
| 广发基金 org | `488b8ad049bb43408a6fbcc50bcb89ac` |
| 陈国辉(1403+星中心) | `1060601019894960128` |
| 王姣(1405 | `1090779433129840640` |
| 秦夏(广发基金) | `1072908835884208128` |
| 28F zone | `605560545117995008` |
| 6F zone | `605560541473144832` |
### 4.1.1 访客数据
测试使用开发库中已预置的**专用测试访客**(号段 `9199000100000000001`~`9199000100000000020`,均已标注"访客"标签 `LABEL_ID = ed2dbab6d6234a7287106b80857c819e`)。这些是测试专用人员,非真实业务访客。
`add/visitor` 写入 `image_rule_ref` 时以 `visitorId` 为键,为避免同一访客的多次写入相互干扰,每个用例轮换使用不同测试访客。
| 用例 | visitorId | 访客标识 |
|------|-----------|----------|
| T1 | `9199000100000000001` | 测试访客AUTO-01 |
| T2 | `9199000100000000002` | 测试访客AUTO-02 |
| T3 | `9199000100000000003` | 测试访客AUTO-03 |
| T4 | `9199000100000000004` | 测试访客AUTO-04 |
| T5 | `9199000100000000005` | 测试访客AUTO-05 |
| T6 | `9199000100000000006` | 测试访客AUTO-06 |
| T7 | `9199000100000000007` | 测试访客AUTO-07 |
### 4.2 用例
| ID | 场景 | 被访人 | 策略 org | allow | enabled | 期望 |
|----|------|--------|----------|-------|---------|------|
| T1 | 有策略→allow 替换 floorList | 陈国辉 | 1403 | [28F] | 1 | passRule 返回仅 [28F] |
| T2 | 无策略→floorList | 王姣 | 1405 | 无 | — | passRule 返回 floorList 全集 |
| T3 | allow 含无效zone→拒绝 | 陈国辉 | 1403 | [28F, 99F] | 1 | code=76260533 |
| T4 | 多组织命中第一个策略 | 陈国辉 | 1403+星中心 | 1403有,星中心无 | 1 | 命中1403→[28F] |
| T5 | enabled=0 等同无策略 | 陈国辉 | 1403 | [28F] | 0 | passRule 返回 floorList 全集 |
| T6 | UC-02 策略优先 | 陈国辉 | 1403 | [28F] | 1 | 传floorIds被忽略→[28F] |
| T7 | 广发基金迁移验证 | 秦夏 | 广发基金 | [28F] | 1 | 迁移后→仅 [28F] |
---
## 5. 脚本结构
**文件**`maven-cw-elevator-application/tools/visitor_floor_verification/scripts/verify_org_policy_fix.py`
```
verify_org_policy_fix.py
├── Phase 0: health_check()
│ GET /actuator/health
├── Phase 1: prepare_test_data()
│ ① INSERT policy_t1_1403 (org=1403, allow=[28F], enabled=1)
│ ② INSERT policy_t3_invalid (org=1403, allow=[28F,99F], enabled=1)
│ ③ INSERT policy_t5_disabled (org=1403, allow=[28F], enabled=0)
│ ④ UPDATE 广发基金 SET org_id='488b8adb...' WHERE id='gf_vstr_...'
├── Phase 2: run_all_cases()
│ 每个用例:
│ POST add/visitor → 检查 HTTP 200 + code + success
│ 成功 → POST passRule/image → 比对 zoneIds
│ 失败 → 检查 code == 期望错误码
├── Phase 3: cleanup_test_data()
│ ① DELETE 测试策略行
│ ② UPDATE 广发基金 SET org_id=NULL
└── Phase 4: print_report()
输出 JSON 报告到 report/org-policy-fix-verify-{timestamp}.json
```
### 5.1 HTTP 请求格式(noauth-probe
```python
headers = {
"Content-Type": "application/json",
"businessid": "2524639890ba4f2cba9ba1a4eeaa4015"
}
# add/visitor
POST /elevator/person/add/visitor
{
"personId": "1060601019894960128",
"visitorId": "<轮换访客ID>",
"floorIds": [],
"begVisitorTime": <now_ms>,
"endVisitorTime": <now_ms + 86400000>
}
# passRule/image(回读)
POST /elevator/passRule/image
{
"personId": "<visitorId>"
}
```
---
## 6. 数据准备与清理
### 6.1 准备 SQL
```sql
-- T1/T4/T6 共用
INSERT INTO tenant_visitor_floor_policy
(id, org_id, business_id, policy_type, allow_zone_ids, building_id, enabled, policy_version, created_at, updated_at)
VALUES ('policy_t1_1403', '72fb65ec5de94201b909a98b8bae1892', NULL, 'INTERSECT_ALLOWLIST',
'["605560545117995008"]', NULL, 1, 1, UNIX_TIMESTAMP(NOW())*1000, UNIX_TIMESTAMP(NOW())*1000);
-- T3
INSERT INTO tenant_visitor_floor_policy
(id, org_id, business_id, policy_type, allow_zone_ids, building_id, enabled, policy_version, created_at, updated_at)
VALUES ('policy_t3_invalid', '72fb65ec5de94201b909a98b8bae1892', NULL, 'INTERSECT_ALLOWLIST',
'["605560545117995008","605560540000000000"]', NULL, 1, 1, UNIX_TIMESTAMP(NOW())*1000, UNIX_TIMESTAMP(NOW())*1000);
-- T5
INSERT INTO tenant_visitor_floor_policy
(id, org_id, business_id, policy_type, allow_zone_ids, building_id, enabled, policy_version, created_at, updated_at)
VALUES ('policy_t5_disabled', '72fb65ec5de94201b909a98b8bae1892', NULL, 'INTERSECT_ALLOWLIST',
'["605560545117995008"]', NULL, 0, 1, UNIX_TIMESTAMP(NOW())*1000, UNIX_TIMESTAMP(NOW())*1000);
-- T7: 广发基金迁移
UPDATE tenant_visitor_floor_policy
SET org_id = '488b8ad049bb43408a6fbcc50bcb89ac'
WHERE id = 'gf_vstr_policy_guangfa_fund_001x';
```
### 6.2 清理 SQL
```sql
DELETE FROM tenant_visitor_floor_policy WHERE id IN ('policy_t1_1403','policy_t3_invalid','policy_t5_disabled');
UPDATE tenant_visitor_floor_policy SET org_id = NULL WHERE id = 'gf_vstr_policy_guangfa_fund_001x';
```
### 6.3 执行顺序
```text
prepare:
INSERT policy_t1_1403 (T1/T4/T6 使用)
INSERT policy_t3_invalid (T3 使用)
INSERT policy_t5_disabled (T5 使用)
UPDATE 广发基金 SET org_id (T7 使用)
execute:
T1: 陈国辉 + policy_t1_1403 → allow=[28F]
T3: 陈国辉 + policy_t3_invalid → 76260533(需先改1403的org_id或先DELETE T1再切换)
T4: 陈国辉(多组织) + policy_t1 → allow=[28F]
T5: 陈国辉 + policy_t5_disabled → floorList全集
T2: 王姣(无策略) → floorList全集
T6: 陈国辉(UC-02) + policy_t1 → allow=[28F]
T7: 秦夏 + 广发基金策略 → allow=[28F]
cleanup:
DELETE 测试行
UPDATE 广发基金 SET org_id=NULL
```
> T3 执行前需确保 policy_t1_1403 不生效(相同 org_id 只能有一条启用策略)。方案:T3 前 DELETE policy_t1_1403T3 后恢复 INSERT。
---
## 7. 验证判定规则
| 判定项 | 通过条件 |
|--------|----------|
| HTTP 状态 | `add/visitor` 返回 200 |
| 业务成功 | `response.success == true` |
| 业务失败 | `response.code == "76260533"` |
| 楼层匹配 | `passRule/image` 返回的 zoneId 集合 == 期望集合(顺序无关) |
| 脱敏 | 报告中不出现 PII(姓名/手机号) |
---
## 8. 输出
```
report/org-policy-fix-verify-{timestamp}.json
```
包含:每个用例的请求/响应摘要、passRule 结果、期望 vs 实际对比、通过/失败汇总。
---
## 9. 文件清单
| 文件 | 操作 | 说明 |
|------|------|------|
| `tools/visitor_floor_verification/scripts/verify_org_policy_fix.py` | 新增 | 主验证脚本 |
| `tools/visitor_floor_verification/report/` | — | 报告输出目录(已有) |
---
*本设计说明待评审,通过后转入 implementation。*
@@ -0,0 +1,113 @@
# org_id 策略修复 — 人工验证操作手册
## 前置条件
- V2 JAR 已构建:`cw-elevator-application-2.0.9.jar`
- 配置文件:`/tmp/v2-redis-fix.properties`
- Redis Docker`v2-test-redis`(端口 6380,密码 `1qaz!QAZ`
- 桩服务脚本:`stub_org_service.py`
---
## 步骤 1:启动 V2 电梯应用
打开**终端 1**,执行:
```bash
/usr/lib/jvm/java-8-openjdk-amd64/bin/java \
-jar /media/zebra/9e8fa357-7db6-4d70-88ed-d5de5a059a663/星河湾星中星/源码/maven-cw-elevator-application/cw-elevator-application-starter/target/cw-elevator-application-2.0.9.jar \
--spring.config.location=file:/tmp/v2-redis-fix.properties
```
等待约 **35 秒**,看到 `Started ElevatorApplication` 后验证:
```bash
curl http://127.0.0.1:18081/health
```
期望输出:`{"status":"UP"}`
---
## 步骤 2:启动组织服务桩
打开**终端 2**,执行:
```bash
python3 /media/zebra/9e8fa357-7db6-4d70-88ed-d5de5a059a663/星河湾星中星/源码/maven-cw-elevator-application/tools/stub_org_service.py
```
验证:
```bash
curl http://127.0.0.1:18082/health
```
期望输出:`{"status":"UP"}`
---
## 步骤 3:运行验证脚本
打开**终端 3**,执行:
```bash
cd /media/zebra/9e8fa357-7db6-4d70-88ed-d5de5a059a663/星河湾星中星/源码/maven-cw-elevator-application/tools/visitor_floor_verification
python3 scripts/verify_org_policy_fix.py --elevator-base-url http://127.0.0.1:18081
```
期望输出:
```
=== Phase 2: run 7 cases ===
[T1] 有策略→allow替换floorList → ✅
[T2] 无策略→floorList → ✅
[T3] allow含无效zone→拒绝 (76260533) → ✅
[T4] 多组织命中第一个策略 → ✅
[T5] enabled=0等同无策略 → ✅
[T6] UC-02策略优先 → ✅
[T7] 广发基金迁移验证 → ✅
Passed: 7/7
```
报告文件:`report/org-policy-fix-verify-YYYYMMDD-HHMMSS.json`
---
## 步骤 4:停止服务
```bash
# 终端1 按 Ctrl+C
# 终端2 按 Ctrl+C
```
---
## 故障排查
| 症状 | 原因 | 解决 |
|------|------|------|
| V2 启动报 `RedisConnectionException` | Redis 密码未配置或端口错误 | 确认 `v2-test-redis` 运行中:`docker ps \| grep v2-test-redis` |
| V2 报 `UnknownHostException: mysql_01` | ShardingSphere 数据源未覆盖 | 确认使用了 `--spring.config.location=file:/tmp/v2-redis-fix.properties` |
| 桩服务端口被占用 | 上次未正常退出 | `pkill -f stub_org_service` |
| 验证脚本 `Connection refused` | V2 或桩未启动 | 检查终端 1/2 的服务日志 |
| DB 连接失败 | MySQL 密码错误 | 确认 `192.168.3.12:3307 root/123456` 可达 |
---
## 本地 Docker 基础设施
| 服务 | 容器名 | 端口 | 说明 |
|------|--------|------|------|
| Redis | `v2-test-redis` | 6380 | 密码 `1qaz!QAZ` |
| Kafka | `ybs-kafka` | 9092 | 无认证 |
| Consul | — | 192.168.3.12:8500 | 远程 |
| MySQL | — | 192.168.3.12:3307 | root/123456 |
如需重建 Redis
```bash
docker rm -f v2-test-redis
docker run -d --name v2-test-redis -p 6380:6379 redis:7-alpine --requirepass "1qaz!QAZ"
```
@@ -0,0 +1,87 @@
# 电梯应用 — 服务发现架构设计
**日期**2026-05-01
**版本**V2(与 V1 生产对齐)
**状态**:已实施
## 1. 核心决策
电梯应用(cw-elevator-application)的三个上游 Feign 客户端 **统一走 Dubbo/ZooKeeper 动态发现**,不依赖任何 `@RibbonClient` 定制或 `ConfigurationBasedServerList` 静态列表。
| 上游服务 | Feign 名称 | 发现方式 |
|---------|-----------|---------|
| 人脸识别 GPU | `ninca-crk-std` | Dubbo/ZooKeeper |
| 组织组件 | `ninca-common-component-organization` | Dubbo/ZooKeeper |
| 公共组件 | `ninca-common` | Dubbo/ZooKeeper |
## 2. 服务发现链路
```
ElevatorApplication
│ @EnableFeignClients(basePackages={...})
├── Feign Client ──→ Ribbon (默认) ──→ DiscoveryClient ──→ Dubbo Registry
│ │
│ zookeeper://10.0.22.207:2181
│ │
├── ZoneFeignClient → ninca-common ──────────────────┘
├── PersonRecordEventHandler → ninca-common-component-organization ─┘
└── ElevatorRecordSendTask → ninca-crk-std ────────────────────┘
```
**启动类**`ElevatorApplication.java` — 无 `@RibbonClients` 注解,Ribbon 走默认 `DiscoveryClient` 模式。
## 3. 配置清单
### bootstrap.properties(生产)
```properties
server.port=16112
spring.application.name=elevator-app
spring.profiles.active=access-control
# Consul — 仅注册自身,不作为发现客户端
spring.cloud.consul.host=371bfca4972c43d2aefcf302d0a4a277
spring.cloud.consul.port=8500
spring.cloud.consul.discovery.enabled=false
# Dubbo/ZooKeeper — 服务发现
dubbo.registry.address=zookeeper://10.0.22.207:2181
dubbo.protocol.port=16107
dubbo.provider.version=1.0
```
### application.properties — 服务名映射
```properties
feign.ninca-crk-std.name=ninca-crk-std
feign.component-organization.name=ninca-common-component-organization
feign.ninca-common.name=ninca-common
```
> 以上均为 Feign 路由名称,不需 `ribbon.listOfServers` 或 `NIWSServerListClassName`。
## 4. V1 vs V2 对比
| | V1 生产 | V2(修复前) | V2(修复后) |
|------|---------|------------|------------|
| ninca-crk-std | Dubbo | ConfigurationBasedServerList(空→报错) | Dubbo |
| ninca-common-component-organization | Dubbo | ConfigurationBasedServerList(空→报错) | Dubbo |
| ninca-common | Dubbo | ConfigurationBasedServerList(空→报错) | Dubbo |
| @RibbonClients | 无 | 3 个 | **无** |
| RibbonConfiguration 类 | 无 | 3 个 | **无** |
## 5. 删除清单
| 文件 | 操作 |
|------|------|
| `NincaCrkStdRibbonConfiguration.java` | 删除 |
| `OrgServiceRibbonConfiguration.java` | 删除 |
| `CommonServiceRibbonConfiguration.java` | 删除 |
| `ElevatorApplication.java``@RibbonClients` 块 | 删除 |
## 6. 运维说明
- 若生产 ZooKeeper (`10.0.22.207:2181`) 不可达,三个 Feign 调用将报 `Load balancer does not have available server`——此为基础设施问题,非代码缺陷。
- `deploy/v2-maven/application.properties` 中无需添加 `*.ribbon.listOfServers`
- 本地测试时可通过 `ninca-common-component-organization.ribbon.listOfServers=127.0.0.1:18082` 覆盖 DiscoveryClient 指向桩服务(需同时设置 `NIWSServerListClassName` 全局限定或通过 `@RibbonClient` 仅在测试 Profile 启用)。
@@ -0,0 +1,280 @@
# V2 全系统功能测试环境搭建 — 设计文档
**日期**: 2026-05-01
**状态**: 待实施
**关联**: AGENTS.md, maven-cw-elevator-application/deploy/
---
## 1. 目标
搭建 cw-elevator-application V2 (v2.0.7) 的全系统集成功能测试环境,包含电梯应用及其所有上下游依赖服务(CRK人脸识别、报警、cwos-manager、ninca-common、component-organization等),能够:
- 一键搭建全部 17 个组件
- 运行 V1 vs V2 API 对拍测试
- 验证 V2.0.7 租户访客固定楼层功能
- 验证 CRK 联动、报警联动等端到端链路
- 15-20 分钟内完成从零到全部验证
---
## 2. 环境约束
| 约束 | 值 |
|------|-----|
| 部署方式 | 本机进程 (Java服务) + Docker 容器 (基础组件) |
| MySQL | 复用现有: `192.168.3.12:3307`, `root/123456` |
| JDK | Java 8 (`/usr/lib/jvm/java-8-openjdk-amd64`) |
| Maven | 3.5+ |
| Docker | 已安装, `docker compose` 可用 |
| 代码分支 | `release/cw-elevator-v1-lib-min-risk` |
| 测试范围 | 全系统集成 — 全部 17 个组件 |
---
## 3. 组件清单
### 3.1 基础组件 (Docker)
| # | 组件 | 端口 | 来源 |
|---|------|------|------|
| I1 | Consul | 8500 | 已有 `deploy/consul-docker/docker-compose.yml` |
| I2 | Redis | 6379 | 需要新增 compose 条目 (`redis:7-alpine`) |
| I3 | Kafka + Zookeeper | 9092, 2181 | 需要新增 compose 条目 (`bitnami/kafka:3.6`) |
| I4 | Nginx (前端代理) | 8090 | 已有 `docker-compose.frontend-local.yml` |
### 3.2 应用服务 (本机进程)
| # | 组件 | 端口 | 来源 | 数据库 |
|---|------|------|------|--------|
| A1 | ninca-common-backend | 33010 | `星中心/ninca_common_01-ninca_common_backend.tar.gz` | `ninca_common` |
| A2 | component-organization | 33011 | `星中心/ninca_common_component_organization_01-...tar.gz` | `component-organization` |
| A3 | cwos-system-api | 3333 | `星中心/cwos_system_api_01-cwos_system_api/` (已解压) | — |
| A4 | cwos-manager | 3721 | Docker Harbor 镜像 (已有 compose) | `cwos_manager` |
| A5 | cwos-portal | 33008 | `星中心/cwos_portal` SQL 备份 → 重建 | `cwos_portal` |
| A6 | snap-app | 33012 | `星中心/ninca_common_snap_app_01-...tar.gz` | — |
| A7 | vehicle-app | 33013 | `星中心/ninca_common_vehicle_app_01-...tar.gz` | — |
| A8 | person-file-app | 33014 | `星中心/ninca-person-file-app-V2.9.2_20210216.tar.gz` | — |
| A9 | monitor-app | 33015 | `星中心/ninca_common_monitor_app_01-...tar.gz` | — |
| A10 | CRK-std | 16106 (app), 16114 (mgmt) | `星中心/ninca_crk_std_01-ninca_crk_std_backend/` (JAR已就绪) | `ninca_crk_std` |
| A11 | alarm-app | 17011 (app), 17211 (mgmt) | `星中心/ninca_qk_alarm_app_01-ninca_qk_alarm_app/` (JAR已就绪) | `alarm_deploy` |
| A12 | elevator V2 | 18081 | Maven 构建 `maven-cw-elevator-application` | `cw-elevator-application` |
| A13 | elevator V1 | 18080 | 对照基线 (已有 JAR) | `cw-elevator-application` |
### 3.3 数据库 (MySQL 192.168.3.12:3307)
| 数据库 | 备份文件 | 大小 |
|--------|---------|------|
| `cw-elevator-application` | `data_backup/12_*.sql.gz` + `34_*.sql.gz` | 158M + 2.5G |
| `ninca_crk_std` | (含在 CRK 配置中,需确认备份) | — |
| `alarm_deploy` | `data_backup/alarm_deploy_*.sql.gz` | 15M |
| `cwos_manager` | `data_backup/cwos_manager_*.sql.gz` | 51K |
| `cwos_portal` | `data_backup/cwos_portal_*.sql.gz` | 212M |
| `ninca_common` | `data_backup/ninca_common_*.sql.gz` | 6M |
| `component-organization` | `data_backup/component-organization_*.sql.gz` | 212M |
| `ods` | `data_backup/ods_*.sql.gz` | 485K |
| `cloudwalk_device_thirdparty` | `data_backup/cloudwalk_device_thirdparty_*.sql.gz` | 4K |
| `g` / `p` / `12` / `34` | 其他备份 | 小量 |
---
## 4. 配置统一化
### 4.1 环境变量 (`config/env.sh`)
```bash
# 基础设施
MYSQL_HOST=192.168.3.12
MYSQL_PORT=3307
MYSQL_USER=root
MYSQL_PASS=123456
REDIS_HOST=127.0.0.1
REDIS_PORT=6379
REDIS_PASS=1qaz!QAZ
CONSUL_HOST=127.0.0.1
CONSUL_PORT=8500
KAFKA_HOST=127.0.0.1
KAFKA_PORT=9092
ZK_HOST=127.0.0.1
ZK_PORT=2181
# 服务端口
PORT_ELEVATOR_V2=18081
PORT_ELEVATOR_V1=18080
PORT_CRK_STD=16106
PORT_CRK_MGMT=16114
PORT_ALARM=17011
PORT_ALARM_MGMT=17211
PORT_CWOS_PORTAL=33008
PORT_COMPONENT_ORG=33011
PORT_NINCA_COMMON=33010
PORT_CWOS_MANAGER=3721
PORT_SYSTEM_API=3333
PORT_SNAP=33012
PORT_VEHICLE=33013
PORT_PERSON_FILE=33014
PORT_MONITOR=33015
PORT_NGINX=8090
# Java
JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
JAVA_OPTS="-Xmx2048m -Xms512m"
```
### 4.2 配置替换规则
每个 Java 服务的 `application.properties` / `bootstrap.properties` 中需要替换:
| 原始值 (生产) | 替换为 (测试) |
|--------------|-------------|
| `mysql_01.mysql_ip` | `192.168.3.12` |
| `redis_01.redis_ip` | `127.0.0.1` |
| `371bfca....` (Consul UUID host) | `127.0.0.1` |
| `44700995e....` (Kafka broker 1) | `127.0.0.1:9092` |
| `0837a70b5....` (Kafka broker 2) | (移除,仅保留一个 broker) |
| `10.128.161.95` (内网 IP 地址) | `127.0.0.1` |
| `10.0.22.207` (内网 ZK) | `127.0.0.1:2181` |
| `10.128.123.108` (内网 DB) | `192.168.3.12` |
| `10.0.22.102` (内网 CRK IP) | `127.0.0.1` |
| `3306` (生产 DB 端口) | `3307` |
---
## 5. 脚本设计
### 5.1 文件结构
```
源码/scripts/test-env/
├── docker-compose.infra.yml # 合并 Consul+Redis+Kafka+Nginx
├── config/
│ ├── env.sh # 统一环境变量
│ ├── consul/consul-config.json # Consul 初始化配置
│ └── service-templates/ # 配置文件模板 (.properties 模板)
├── setup.sh # 主入口: 一键搭建
├── start-all.sh # 启动全部服务
├── stop-all.sh # 停止全部服务
├── health-check.sh # 探活检查
├── prepare-db.sh # 数据库恢复
├── prepare-services.sh # 解压 + 配置注入
├── build-elevator-v2.sh # 编译 V2 电梯应用
└── verify-functional.sh # 功能验证
```
### 5.2 启动依赖拓扑
```
I1 Consul ──┐
I2 Redis ───┤ (Docker 并行启动)
I3 Kafka ───┤
I4 Nginx ───┘
A1 ninca-common ─────────────────────────┐
A2 component-org ←── common ─────────────┤
A3 system-api ←── manager ───────────────┤
A4 cwos-manager (Docker) ────────────────┤
A5 cwos-portal ←── org + manager ────────┤
A6 snap-app ←── portal + common ─────────┤
A7 vehicle-app ←── portal + common ──────┤
A8 person-file ←── portal ───────────────┤
A9 monitor-app (独立) ───────────────────┤
A10 CRK-std ←── portal + org + elevator ─┤
A11 alarm-app ←── portal + org + Kafka ──┤
A12 elevator-V2 ←── CRK + portal + org ──┤
A13 elevator-V1 (对拍对照) ───────────────┘
```
### 5.3 主入口执行流程
```
setup.sh:
Phase 1: 环境检查 (< 10s)
├── JDK 8 检查
├── Maven 检查
├── Docker 检查
├── MySQL 连通性检查 (192.168.3.12:3307)
└── 端口冲突检查
Phase 2: 数据库准备 (~5min)
├── 创建所有数据库 (如不存在)
├── 解压并导入 11 个 SQL 备份
└── 执行 V2 DDL (tenant_visitor_floor_policy.sql)
Phase 3: Docker 启动 (~30s)
├── docker compose up infra
├── 等待 Consul Ready
├── 等待 Kafka Ready
└── 启动 Nginx
Phase 4: 服务准备 (~5-10min)
├── 解压 5 个 tar.gz
├── 从模板生成各服务配置文件
├── 编译 V2 电梯应用
└── 同步 JAR 到 deploy/
Phase 5: 服务启动 (~2min)
├── 按拓扑序依次启动 13 个 Java 服务
├── 每个服务启动后探活确认
└── 失败自动重试 (max 3 次)
Phase 6: 验证 (~2min)
├── 全端口探活
├── Consul 注册检查
├── V1/V2 API 对拍 (pytest)
└── 输出验证报告
总耗时: ~15-20 分钟
```
---
## 6. 验证矩阵
| ID | 验证项 | 命令/方法 | 通过标准 |
|----|--------|----------|---------|
| H1 | 所有端口可达 | `nc -z 127.0.0.1 <port>` x 15 | 全部 open |
| H2 | 所有 HTTP 健康检查 | `curl /actuator/health` x 8 | 全部 200 + UP |
| H3 | Consul 服务注册 | `curl :8500/v1/agent/services` | 10+ 服务已注册 |
| F1 | V1/V2 API 对拍 | `pytest tools/elevator_api_parity/tests/` | 全部通过 |
| F2 | V2.0.7 UC-01 基线 | 不传 floorIds, 无策略 | floorList 全集 |
| F3 | V2.0.7 UC-01 固定楼层 | 不传 floorIds, 有策略 | floorList ∩ allow |
| F4 | V2.0.7 无交集 | allow 与 floorList 无交集 | 错误码 76260532 |
| F5 | V2.0.7 被访人无楼层 | personId 无楼层 | 错误码 76260531 |
| F6 | V2.0.7 UC-02 | 显式传 floorIds | 不读策略表 |
| F7 | CRK 联动 | curl CRK → 电梯回调 | CRK 日志有 Feign 记录 |
| F8 | 报警 Kafka 消费 | 提交事件 → alarm 日志 | Kafka 消息到达 |
| F9 | Nginx 前端代理 | `curl :8090` | cwos-portal 首页 |
| I1 | MySQL 连通 | `mysql -h 192.168.3.12 -P3307 -e 'SELECT 1'` | 1 |
---
## 7. 已知风险与缓解
| 风险 | 影响 | 缓解 |
|------|------|------|
| `星中心/*.tar.gz` 内 JAR 版本与 DB 备份不匹配 | 启动失败 | 从同一时间点导出 (2026-04-23) 的 DB 备份对齐 |
| Docker Kafka 首次启动慢 | Phase 3 超时 | 脚本增加 60s 等待 + 重试逻辑 |
| V2 Maven 编译需 Nexus 私服 | 编译失败 | 已有 `build_nexus_only.sh` 降级方案 |
| cwos-portal 无独立 JAR | 无法启动 | 从 DB 备份 `cwos_portal` 库确认部署方式 |
| 端口冲突 (已有进程占用) | 启动失败 | Phase 1 预先检查, 用 `lsof` 检测并提示 |
| ES (Elasticsearch) 依赖 | alarm 启动可能失败 | alarm `application.properties` 配置 ES, 需 Docker 添加 |
---
## 8. 未解决问题
1. **cwos-portal 部署方式**: 星中心中没有 cwos-portal 的 JAR 或 tarball, 仅 DB 备份中有 `cwos_portal` 数据。需确认其部署形态 (fat JAR? war? Docker?)。
2. **cwos-system-api 启动入口**: `cwos_system_api_01-cwos_system_api/` 已解压, 需确认 JAR 入口和端口。
3. **Elasticsearch**: alarm 依赖 ES (`elasticsearch.ip`), 是否需要在 Docker Compose 中添加 ES 容器?
4. **Dubbo/ZK**: V1 电梯 bootstrap 配置有 Dubbo + ZK, V2 是否需要?可以在 Docker Compose 中添加 ZK。
---
## 9. 产出物
- `源码/scripts/test-env/docker-compose.infra.yml` — 基础组件 Docker Compose
- `源码/scripts/test-env/setup.sh` — 一键搭建脚本
- `源码/scripts/test-env/config/env.sh` — 统一环境变量
- `源码/scripts/test-env/config/service-templates/` — 14 个配置模板
- `源码/scripts/test-env/start-all.sh` / `stop-all.sh` — 启停脚本
- `源码/scripts/test-env/verify-functional.sh` — 功能验证脚本
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,18 @@
# V1/V2 加载顺序与最终清单摘要
## 加载顺序
- 优先级采用: external > jar(在未显式 `--spring.config.location` 的前提下)
- V1: 三个配置文件 external=Y, jar=Y
- V2.0.4: 三个配置文件 external=Y, jar=Y
## 关键结论
- V1 `spring.cloud.consul.discovery.enabled` = `false`
- V2 `spring.cloud.consul.discovery.enabled` = `true`
- V1 `spring.cloud.consul.host` = `10.128.161.95`
- V2 `spring.cloud.consul.host` = `10.0.22.102`
## 输出文件
- `/media/zebra/9e8fa357-7db6-4d70-88ed-d5de5a059a663/星河湾星中星/反编译/docs/testing/config-load-compare/v1-effective-20260429-221913.json`
- `/media/zebra/9e8fa357-7db6-4d70-88ed-d5de5a059a663/星河湾星中星/反编译/docs/testing/config-load-compare/v2-effective-20260429-221913.json`
- `/media/zebra/9e8fa357-7db6-4d70-88ed-d5de5a059a663/星河湾星中星/反编译/docs/testing/config-load-compare/v1-v2-diff-20260429-221913.md`
- `/media/zebra/9e8fa357-7db6-4d70-88ed-d5de5a059a663/星河湾星中星/反编译/docs/testing/config-load-compare/load-order-summary-20260429-221913.md`
@@ -0,0 +1,15 @@
# 加载顺序复测(V2使用V1属性)
- 顺序: external > jar(未显式spring.config.location
- V1 discovery.enabled=false
- V2 discovery.enabled=false
- V1 consul.host=10.128.161.95
- V2 consul.host=371bfca4972c43d2aefcf302d0a4a277
- 差异键数量=11
## 文件
- /media/zebra/9e8fa357-7db6-4d70-88ed-d5de5a059a663/星河湾星中星/反编译/docs/testing/config-load-compare/v1-effective-20260429-224315.json
- /media/zebra/9e8fa357-7db6-4d70-88ed-d5de5a059a663/星河湾星中星/反编译/docs/testing/config-load-compare/v2-effective-v1props-20260429-224315.json
- /media/zebra/9e8fa357-7db6-4d70-88ed-d5de5a059a663/星河湾星中星/反编译/docs/testing/config-load-compare/v1-v2-v1props-diff-20260429-224315.md
- /media/zebra/9e8fa357-7db6-4d70-88ed-d5de5a059a663/星河湾星中星/反编译/docs/testing/config-load-compare/load-order-summary-v1props-20260429-224315.md
@@ -0,0 +1,219 @@
{
"tag": "V1",
"base_dir": "/media/zebra/9e8fa357-7db6-4d70-88ed-d5de5a059a663/星河湾星中星/反编译/cw-elevator-application-V1.0.0.20211103",
"jar": "/media/zebra/9e8fa357-7db6-4d70-88ed-d5de5a059a663/星河湾星中星/反编译/cw-elevator-application-V1.0.0.20211103/cw-elevator-application-V1.0.0.20211103.jar",
"order_assumption": "external > jar (未显式spring.config.location时)",
"file_presence": {
"bootstrap.properties": {
"external": true,
"jar": true
},
"application.properties": {
"external": true,
"jar": true
},
"application-access-control.properties": {
"external": true,
"jar": true
}
},
"focus_keys": {
"spring.application.name": {
"value": "elevator-app",
"source": "external"
},
"spring.profiles.active": {
"value": "access-control",
"source": "external"
},
"spring.cloud.consul.host": {
"value": "10.128.161.95",
"source": "external"
},
"spring.cloud.consul.port": {
"value": "8500",
"source": "external"
},
"spring.cloud.consul.enabled": {
"value": "true",
"source": "external"
},
"spring.cloud.consul.discovery.enabled": {
"value": "false",
"source": "external"
},
"spring.cloud.consul.discovery.register": {
"value": "true",
"source": "external"
},
"spring.cloud.consul.config.enabled": {
"value": "<unset>",
"source": "unset"
},
"feign.cwos-portal.name": {
"value": "cwos-portal",
"source": "external"
},
"feign.ninca-common.name": {
"value": "ninca-common",
"source": "external"
},
"feign.component-organization.name": {
"value": "ninca-common-component-organization",
"source": "external"
},
"cwos-portal.ribbon.NIWSServerListClassName": {
"value": "<unset>",
"source": "unset"
},
"cwos-portal.ribbon.listOfServers": {
"value": "<unset>",
"source": "unset"
},
"ninca-common.ribbon.NIWSServerListClassName": {
"value": "<unset>",
"source": "unset"
},
"ninca-common.ribbon.listOfServers": {
"value": "<unset>",
"source": "unset"
}
},
"effective_all_keys": {
"spring.cloud.consul.discovery.enabled": "false",
"feign.ninca-common.name": "ninca-common",
"ninca.update.floor.pool.allowCoreThreadTimeOut": "true",
"sendRecord.token.appKey": "293e2d708f0143c2957b702cef44d951",
"ninca.update.floor.pool.corePoolSize": "5",
"cloudwalk.access-control.common.device-category-array[0]": "4",
"cloudwalk.access-control.common.device-category-array[5]": "11",
"feign.component-organization.name": "ninca-common-component-organization",
"hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds": "10000",
"spring.cloud.consul.discovery.instance-id": "${spring.application.name}-${spring.cloud.client.ipAddress}:${server.port}",
"spring.redis.timeout": "0",
"spring.messages.basename": "access-control",
"spring.shardingsphere.datasource.ds0.type": "com.zaxxer.hikari.HikariDataSource",
"spring.cloud.consul.discovery.register": "true",
"spring.shardingsphere.sharding.tables.IT_ACS_ELEVATOR_RECORD.table-strategy.standard.precise-algorithm-class-name": "cn.cloudwalk.elevator.YearlyShardingAlgorithm",
"cloudwalk.datafield.securityKey": "d4b2aabc97394a12a27fc3cca6cd9ba1",
"cloudwalk.access-control.common.publish-opendoor-service-code": "access-control",
"spring.shardingsphere.datasource.ds0.maximum-pool-size": "20",
"cloudwalk.serial.enable": "true",
"cloudwalk.access-control.common.device-category-array[1]": "5",
"spring.redis.host": "127.0.0.1",
"spring.shardingsphere.datasource.ds0.pool-name": "ds0-pool",
"person.name.space": "recordEvent",
"spring.profiles.active": "access-control",
"management.health.redis.enabled": "false",
"management.health.db.enabled": "false",
"cloudwalk.serial.serial-redis-key": "CLOUDWALK-ACS-SERIAL-KEY",
"spring.application.name": "elevator-app",
"dubbo.protocol.port": "16107",
"spring.shardingsphere.datasource.ds0.driver-class-name": "com.mysql.jdbc.Driver",
"spring.shardingsphere.sharding.binding-tables": "IT_ACS_ELEVATOR_RECORD,IT_ACS_RECOG_RECORD",
"spring.cloud.consul.discovery.prefer-ip-address": "true",
"cloudwalk.event.bootstrap-servers": "10.128.161.95:9092",
"cloudwalk.access-control.common.face-compare-THRESHOLD": "80",
"spring.http.encoding.charset": "UTF-8",
"spring.shardingsphere.datasource.ds0.password": "123456",
"mybatis.mapper-locations": "classpath*:cn/cloudwalk/elevator/**/*.xml",
"ribbon.ReadTimeout": "10000",
"lockWatchdogTimeout": "21000",
"cloudwalk.elevator.common.relativePrefix": "/cwos-portal/portal/fileManager/imgByPath?path=",
"spring.shardingsphere.props.sql.show": "false",
"intelligent.lock.enable": "true",
"mybatis.config-location": "classpath:mapper/mybatis-config.xml",
"spring.redis.pool.max-idle": "1",
"spring.cloud.consul.host": "10.128.161.95",
"feign.ninca-crk-std.name": "ninca-crk-std",
"cloudwalk.access-control.common.face-capture-interval-milliseconds": "3000",
"spring.redis.pool.max-wait": "10",
"elevator.application.time": "600",
"dubbo.provider.version": "1.0",
"feign.hystrix.enable": "true",
"spring.shardingsphere.datasource.ds0.auto-commit": "true",
"cloudwalk.serial.serial-length": "8",
"spring.mvc.throw-exception-if-no-handler-found": "true",
"cloudwalk.access-control.schedual.jobs.AcsRecordStatisticsByDayJob.executable-class": "cn.cloudwalk.service.ninca.accesscontrol.common.job.executable.AcsRecordStatisticsByDayJob",
"cloudwalk.access-control.common.device-category-array[2]": "7",
"spring.shardingsphere.sharding.tables.IT_ACS_RECOG_RECORD.actual-data-nodes": "ds0.IT_ACS_RECOG_RECORD_$->{2020..2022}",
"floor.building.id": "605560539791228928",
"spring.shardingsphere.datasource.ds0.jdbc-url": "jdbc:mysql://192.168.3.12:3307/cw-elevator-application?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf-8&useSSL=false&allowMultiQueries=true",
"feign.mqtt.name": "cloudwalk-device-thirdparty",
"sendRecord.token.corpId": "53db867a8bb747a1bd04dd1afcad8ca6",
"spring.messages.encoding": "utf-8",
"cloudwalk.serial.serial-type": "redis",
"spring.shardingsphere.sharding.default-data-source-name": "ds0",
"cloudwalk.access-control.common.face-capture-time-expired-milliseconds": "300000",
"elevator.application.keyA": "5B7DEF88FF04",
"spring.http.encoding.force": "true",
"spring.redis.pool.max-active": "10",
"cloudwalk.access-control.schedual.jobs.AcsRecordStatisticsByDayJob.priority": "1",
"ninca.update.floor.pool.queueCapacity": "100000",
"ribbon.ConnectTimeout": "10000",
"cloudwalk.access-control.common.device-atrr-map.ACS_FACE_REG_THRESHOLD": "75",
"spring.http.multipart.max-request-size": "200MB",
"logging.config": "classpath:logs/logback.xml",
"cloudwalk.access-control.schedual.jobs.AcsRecordStatisticsByDayJob.group": "ACCESS-CONTROL_GROUP",
"cloudwalk.datafield.encrypt": "AES",
"spring.http.multipart.max-file-size": "200MB",
"dubbo.registry.address": "zookeeper://10.128.161.95:2181",
"spring.shardingsphere.sharding.tables.IT_ACS_RECOG_RECORD.table-strategy.standard.precise-algorithm-class-name": "cn.cloudwalk.elevator.YearlyShardingAlgorithm",
"logging.path": "logs",
"server.port": "16112",
"cloudwalk.access-control.common.device-controller-array[0]": "mqtt",
"spring.cloud.consul.discovery.deregister": "false",
"spring.shardingsphere.sharding.tables.IT_ACS_RECOG_RECORD.table-strategy.standard.range-algorithm-class-name": "cn.cloudwalk.elevator.YearlyShardingAlgorithm",
"cloudwalk.access-control.common.device-category-array[3]": "2",
"spring.shardingsphere.datasource.ds0.minimum-idle": "5",
"spring.shardingsphere.datasource.names": "ds0",
"sendRecord.token.appSecret": "5f6995009b864669b52041b8f5dc4625",
"logging.level.root": "info",
"intelligent.lock.config.default-wait-time": "10000",
"spring.cloud.consul.port": "8500",
"logging.file": "${spring.application.name}",
"ribbon.okhttp.enabled": "true",
"cloudwalk.access-control.schedual.jobs.AcsRecordStatisticsByDayJob.cron-expression": "0 10 0 * * ?",
"feign.davinci-portal.name": "cwos-portal",
"sendRecord.boolean": "true",
"ninca-crk-std.ip": "10.128.161.95:16106",
"spring.mvc.locale": "zh_CN",
"cloudwalk.access-control.schedual.jobs.AcsRecordStatisticsByDayJob.description": "AcsRecordStatisticsByDay job is starting.........",
"spring.shardingsphere.sharding.tables.IT_ACS_ELEVATOR_RECORD.table-strategy.standard.range-algorithm-class-name": "cn.cloudwalk.elevator.YearlyShardingAlgorithm",
"feign.resource.name": "cwos-portal",
"spring.redis.port": "6379",
"cloudwalk.datafield.enable": "true",
"logging.level.cn.cloudwalk": "info",
"cloudwalk.event.group-id": "cw-elevator-application-1",
"cloudwalk.access-control.common.face-capture-open-door-fail-milliseconds": "600000",
"spring.shardingsphere.datasource.ds0.username": "root",
"cloudwalk.spring.cache.expires": "CACHE_NAME_APPLICATIONIDS#21600,ACS_DeviceTypesCache#7200,ACS_DeviceTypeFeaturesCache#7200,ACS_DeviceAttrsCache#7200,ACS_RecordStatisticsCache#90000,ACS_AreaTreeCache#60",
"spring.messages.always-use-message-format": "true",
"spring.redis.database": "5",
"spring.shardingsphere.datasource.ds0.max-lifetime": "1765000",
"cloudwalk.access-control.common.device-category-array[4]": "8",
"cloudwalk.access-control.common.publish-opendoor-switch": "false",
"feign.device.name": "cwos-portal",
"feign.cwos-portal.name": "cwos-portal",
"ninca.update.floor.pool.maxPoolSize": "5",
"spring.cloud.consul.enabled": "true",
"sendRecord.ip": "hrec.star-river.com:32165",
"cloudwalk.access-control.schedual.jobs.AcsRecordStatisticsByDayJob.name": "AcsRecordStatisticsByDayJob",
"cloudwalk.event.handler-executor-config.core-pool-size": "10",
"elevator.application.key": "xinghewan",
"ninca.update.floor.pool.keepAliveSeconds": "150",
"spring.redis.pool.min-idle": "0",
"spring.cloud.consul.discovery.ip-address": "${spring.cloud.client.ipAddress}",
"feign.okhttp.enable": "true",
"spring.shardingsphere.sharding.tables.IT_ACS_ELEVATOR_RECORD.table-strategy.standard.sharding-column": "RECOGNITION_TIME",
"spring.shardingsphere.datasource.ds0.connection-timeout": "60000",
"cloudwalk.event.handler-executor-config.maximum-pool-size": "30",
"spring.shardingsphere.sharding.tables.IT_ACS_RECOG_RECORD.table-strategy.standard.sharding-column": "RECOGNITION_TIME",
"feign.httpclient.enable": "false",
"spring.http.encoding.enabled": "true",
"ribbon.http.client.enabled": "false",
"spring.redis.password": "1qaz!QAZ",
"spring.shardingsphere.sharding.tables.IT_ACS_ELEVATOR_RECORD.actual-data-nodes": "ds0.IT_ACS_ELEVATOR_RECORD_$->{2020..2022}",
"server.tomcat.uri-encoding": "UTF-8"
}
}
@@ -0,0 +1,195 @@
{
"tag": "V1",
"base_dir": "/media/zebra/9e8fa357-7db6-4d70-88ed-d5de5a059a663/星河湾星中星/反编译/cw-elevator-application-V1.0.0.20211103",
"jar": "/media/zebra/9e8fa357-7db6-4d70-88ed-d5de5a059a663/星河湾星中星/反编译/cw-elevator-application-V1.0.0.20211103/cw-elevator-application-V1.0.0.20211103.jar",
"order": "external>jar",
"file_presence": {
"bootstrap.properties": {
"external": true,
"jar": true
},
"application.properties": {
"external": true,
"jar": true
},
"application-access-control.properties": {
"external": true,
"jar": true
}
},
"focus_keys": {
"spring.cloud.consul.host": {
"value": "10.128.161.95",
"source": "external"
},
"spring.cloud.consul.port": {
"value": "8500",
"source": "external"
},
"spring.cloud.consul.discovery.enabled": {
"value": "false",
"source": "external"
},
"spring.cloud.consul.config.enabled": {
"value": "<unset>",
"source": "unset"
},
"feign.cwos-portal.name": {
"value": "cwos-portal",
"source": "external"
},
"feign.ninca-common.name": {
"value": "ninca-common",
"source": "external"
},
"feign.component-organization.name": {
"value": "ninca-common-component-organization",
"source": "external"
},
"cwos-portal.ribbon.NIWSServerListClassName": {
"value": "<unset>",
"source": "unset"
},
"cwos-portal.ribbon.listOfServers": {
"value": "<unset>",
"source": "unset"
}
},
"effective_all_keys": {
"logging.level.root": "info",
"logging.config": "classpath:logs/logback.xml",
"management.health.redis.enabled": "false",
"hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds": "10000",
"cloudwalk.event.handler-executor-config.core-pool-size": "10",
"spring.cloud.consul.discovery.instance-id": "${spring.application.name}-${spring.cloud.client.ipAddress}:${server.port}",
"ninca.update.floor.pool.queueCapacity": "100000",
"person.name.space": "recordEvent",
"spring.redis.pool.max-active": "10",
"spring.cloud.consul.discovery.enabled": "false",
"sendRecord.token.appSecret": "5f6995009b864669b52041b8f5dc4625",
"spring.cloud.consul.enabled": "true",
"ninca.update.floor.pool.maxPoolSize": "5",
"cloudwalk.serial.serial-length": "8",
"server.port": "16112",
"spring.shardingsphere.datasource.names": "ds0",
"elevator.application.key": "xinghewan",
"spring.redis.password": "1qaz!QAZ",
"spring.mvc.throw-exception-if-no-handler-found": "true",
"logging.file": "${spring.application.name}",
"feign.component-organization.name": "ninca-common-component-organization",
"cloudwalk.spring.cache.expires": "CACHE_NAME_APPLICATIONIDS#21600,ACS_DeviceTypesCache#7200,ACS_DeviceTypeFeaturesCache#7200,ACS_DeviceAttrsCache#7200,ACS_RecordStatisticsCache#90000,ACS_AreaTreeCache#60",
"feign.mqtt.name": "cloudwalk-device-thirdparty",
"spring.shardingsphere.datasource.ds0.connection-timeout": "60000",
"ninca.update.floor.pool.keepAliveSeconds": "150",
"feign.cwos-portal.name": "cwos-portal",
"spring.shardingsphere.datasource.ds0.password": "123456",
"spring.shardingsphere.sharding.tables.IT_ACS_ELEVATOR_RECORD.table-strategy.standard.sharding-column": "RECOGNITION_TIME",
"spring.shardingsphere.sharding.tables.IT_ACS_ELEVATOR_RECORD.table-strategy.standard.precise-algorithm-class-name": "cn.cloudwalk.elevator.YearlyShardingAlgorithm",
"floor.building.id": "605560539791228928",
"spring.messages.basename": "access-control",
"spring.cloud.consul.port": "8500",
"ribbon.http.client.enabled": "false",
"sendRecord.ip": "hrec.star-river.com:32165",
"cloudwalk.access-control.schedual.jobs.AcsRecordStatisticsByDayJob.cron-expression": "0 10 0 * * ?",
"sendRecord.token.corpId": "53db867a8bb747a1bd04dd1afcad8ca6",
"cloudwalk.serial.serial-redis-key": "CLOUDWALK-ACS-SERIAL-KEY",
"cloudwalk.datafield.enable": "true",
"elevator.application.time": "600",
"cloudwalk.access-control.common.device-category-array[5]": "11",
"spring.messages.always-use-message-format": "true",
"spring.mvc.locale": "zh_CN",
"feign.ninca-crk-std.name": "ninca-crk-std",
"sendRecord.token.appKey": "293e2d708f0143c2957b702cef44d951",
"ribbon.ConnectTimeout": "10000",
"spring.cloud.consul.discovery.deregister": "false",
"spring.redis.timeout": "0",
"spring.shardingsphere.sharding.default-data-source-name": "ds0",
"spring.redis.database": "5",
"cloudwalk.access-control.schedual.jobs.AcsRecordStatisticsByDayJob.executable-class": "cn.cloudwalk.service.ninca.accesscontrol.common.job.executable.AcsRecordStatisticsByDayJob",
"cloudwalk.access-control.schedual.jobs.AcsRecordStatisticsByDayJob.description": "AcsRecordStatisticsByDay job is starting.........",
"logging.level.cn.cloudwalk": "info",
"cloudwalk.access-control.schedual.jobs.AcsRecordStatisticsByDayJob.priority": "1",
"spring.profiles.active": "access-control",
"spring.http.encoding.force": "true",
"spring.redis.pool.max-wait": "10",
"cloudwalk.access-control.common.device-controller-array[0]": "mqtt",
"cloudwalk.event.group-id": "cw-elevator-application-1",
"spring.shardingsphere.sharding.tables.IT_ACS_RECOG_RECORD.table-strategy.standard.precise-algorithm-class-name": "cn.cloudwalk.elevator.YearlyShardingAlgorithm",
"sendRecord.boolean": "true",
"logging.path": "logs",
"ribbon.okhttp.enabled": "true",
"spring.shardingsphere.datasource.ds0.username": "root",
"spring.redis.port": "6379",
"feign.hystrix.enable": "true",
"spring.http.multipart.max-request-size": "200MB",
"feign.device.name": "cwos-portal",
"elevator.application.keyA": "5B7DEF88FF04",
"cloudwalk.datafield.securityKey": "d4b2aabc97394a12a27fc3cca6cd9ba1",
"spring.cloud.consul.discovery.ip-address": "${spring.cloud.client.ipAddress}",
"cloudwalk.access-control.common.device-atrr-map.ACS_FACE_REG_THRESHOLD": "75",
"cloudwalk.access-control.common.face-compare-THRESHOLD": "80",
"cloudwalk.datafield.encrypt": "AES",
"management.health.db.enabled": "false",
"server.tomcat.uri-encoding": "UTF-8",
"spring.shardingsphere.datasource.ds0.max-lifetime": "1765000",
"mybatis.mapper-locations": "classpath*:cn/cloudwalk/elevator/**/*.xml",
"intelligent.lock.config.default-wait-time": "10000",
"spring.shardingsphere.sharding.tables.IT_ACS_RECOG_RECORD.table-strategy.standard.sharding-column": "RECOGNITION_TIME",
"ninca.update.floor.pool.corePoolSize": "5",
"spring.http.multipart.max-file-size": "200MB",
"ribbon.ReadTimeout": "10000",
"cloudwalk.access-control.common.device-category-array[2]": "7",
"cloudwalk.access-control.common.publish-opendoor-switch": "false",
"dubbo.provider.version": "1.0",
"spring.shardingsphere.sharding.tables.IT_ACS_ELEVATOR_RECORD.actual-data-nodes": "ds0.IT_ACS_ELEVATOR_RECORD_$->{2020..2022}",
"spring.cloud.consul.host": "10.128.161.95",
"cloudwalk.access-control.common.face-capture-open-door-fail-milliseconds": "600000",
"cloudwalk.access-control.common.device-category-array[3]": "2",
"feign.davinci-portal.name": "cwos-portal",
"spring.shardingsphere.datasource.ds0.pool-name": "ds0-pool",
"cloudwalk.elevator.common.relativePrefix": "/cwos-portal/portal/fileManager/imgByPath?path=",
"spring.redis.host": "127.0.0.1",
"spring.shardingsphere.props.sql.show": "false",
"spring.shardingsphere.sharding.binding-tables": "IT_ACS_ELEVATOR_RECORD,IT_ACS_RECOG_RECORD",
"spring.shardingsphere.sharding.tables.IT_ACS_RECOG_RECORD.table-strategy.standard.range-algorithm-class-name": "cn.cloudwalk.elevator.YearlyShardingAlgorithm",
"spring.shardingsphere.datasource.ds0.auto-commit": "true",
"spring.messages.encoding": "utf-8",
"spring.redis.pool.min-idle": "0",
"spring.shardingsphere.datasource.ds0.jdbc-url": "jdbc:mysql://192.168.3.12:3307/cw-elevator-application?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf-8&useSSL=false&allowMultiQueries=true",
"spring.application.name": "elevator-app",
"cloudwalk.serial.serial-type": "redis",
"feign.okhttp.enable": "true",
"mybatis.config-location": "classpath:mapper/mybatis-config.xml",
"spring.redis.pool.max-idle": "1",
"cloudwalk.access-control.common.face-capture-interval-milliseconds": "3000",
"cloudwalk.serial.enable": "true",
"spring.cloud.consul.discovery.prefer-ip-address": "true",
"cloudwalk.access-control.common.face-capture-time-expired-milliseconds": "300000",
"dubbo.protocol.port": "16107",
"intelligent.lock.enable": "true",
"lockWatchdogTimeout": "21000",
"spring.shardingsphere.sharding.tables.IT_ACS_RECOG_RECORD.actual-data-nodes": "ds0.IT_ACS_RECOG_RECORD_$->{2020..2022}",
"ninca.update.floor.pool.allowCoreThreadTimeOut": "true",
"cloudwalk.access-control.schedual.jobs.AcsRecordStatisticsByDayJob.group": "ACCESS-CONTROL_GROUP",
"spring.cloud.consul.discovery.register": "true",
"feign.httpclient.enable": "false",
"spring.shardingsphere.datasource.ds0.driver-class-name": "com.mysql.jdbc.Driver",
"spring.http.encoding.charset": "UTF-8",
"ninca-crk-std.ip": "10.128.161.95:16106",
"spring.http.encoding.enabled": "true",
"spring.shardingsphere.sharding.tables.IT_ACS_ELEVATOR_RECORD.table-strategy.standard.range-algorithm-class-name": "cn.cloudwalk.elevator.YearlyShardingAlgorithm",
"cloudwalk.event.handler-executor-config.maximum-pool-size": "30",
"spring.shardingsphere.datasource.ds0.minimum-idle": "5",
"spring.shardingsphere.datasource.ds0.maximum-pool-size": "20",
"cloudwalk.event.bootstrap-servers": "10.128.161.95:9092",
"spring.shardingsphere.datasource.ds0.type": "com.zaxxer.hikari.HikariDataSource",
"dubbo.registry.address": "zookeeper://10.128.161.95:2181",
"feign.ninca-common.name": "ninca-common",
"feign.resource.name": "cwos-portal",
"cloudwalk.access-control.common.device-category-array[4]": "8",
"cloudwalk.access-control.common.device-category-array[0]": "4",
"cloudwalk.access-control.schedual.jobs.AcsRecordStatisticsByDayJob.name": "AcsRecordStatisticsByDayJob",
"cloudwalk.access-control.common.device-category-array[1]": "5",
"cloudwalk.access-control.common.publish-opendoor-service-code": "access-control"
}
}
@@ -0,0 +1,28 @@
# V1 vs V2.0.4 最终加载差异
- 生成时间: 2026-04-29T22:19:14.387292
- 加载顺序假设: external > jar (未显式spring.config.location时)
## 关键键差异
- `spring.cloud.consul.host`: V1=`10.128.161.95`(external) | V2=`10.0.22.102`(external)
- `spring.cloud.consul.discovery.enabled`: V1=`false`(external) | V2=`true`(external)
## 全量差异键统计
- 差异键数量: 12
## 前50个差异键
- `cloudwalk.event.bootstrap-servers`: V1=`10.128.161.95:9092` | V2=`371bfca4972c43d2aefcf302d0a4a277:9092,44700995ee904679a7ad5afddcf93bb5:9092,0837a70b5fab47569391828f5feb2561:9092`
- `dubbo.registry.address`: V1=`zookeeper://10.128.161.95:2181` | V2=`zookeeper://10.0.22.207:2181`
- `logging.path`: V1=`logs` | V2=`/data/cwos/cw-elevator-application-V1.0.0.20211103/logs`
- `ninca-crk-std.ip`: V1=`10.128.161.95:16106` | V2=`10.0.22.102:16106`
- `spring.cloud.consul.discovery.enabled`: V1=`false` | V2=`true`
- `spring.cloud.consul.host`: V1=`10.128.161.95` | V2=`10.0.22.102`
- `spring.redis.host`: V1=`127.0.0.1` | V2=`redis_01.redis_ip`
- `spring.shardingsphere.datasource.ds0.jdbc-url`: V1=`jdbc:mysql://192.168.3.12:3307/cw-elevator-application?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf-8&useSSL=false&allowMultiQueries=true` | V2=`jdbc:mysql://mysql_01.mysql_ip:3306/cw-elevator-application?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf-8&useSSL=false&allowMultiQueries=true`
- `spring.shardingsphere.datasource.ds0.password`: V1=`123456` | V2=`1qaz!QAZ`
- `spring.shardingsphere.datasource.ds0.username`: V1=`root` | V2=`cloudwalk`
- `spring.shardingsphere.sharding.tables.IT_ACS_ELEVATOR_RECORD.actual-data-nodes`: V1=`ds0.IT_ACS_ELEVATOR_RECORD_$->{2020..2022}` | V2=`ds0.IT_ACS_ELEVATOR_RECORD_$->{2020..2030}`
- `spring.shardingsphere.sharding.tables.IT_ACS_RECOG_RECORD.actual-data-nodes`: V1=`ds0.IT_ACS_RECOG_RECORD_$->{2020..2022}` | V2=`ds0.IT_ACS_RECOG_RECORD_$->{2020..2030}`
@@ -0,0 +1,27 @@
# V1 vs V2(使用V1属性打包) 差异
- 差异键数量: 11
## 关键键
- `spring.cloud.consul.host`: V1=`10.128.161.95`(external) | V2=`371bfca4972c43d2aefcf302d0a4a277`(external)
- `spring.cloud.consul.port`: V1=`8500`(external) | V2=`8500`(external)
- `spring.cloud.consul.discovery.enabled`: V1=`false`(external) | V2=`false`(external)
- `spring.cloud.consul.config.enabled`: V1=`<unset>`(unset) | V2=`<unset>`(unset)
- `feign.cwos-portal.name`: V1=`cwos-portal`(external) | V2=`cwos-portal`(external)
- `feign.ninca-common.name`: V1=`ninca-common`(external) | V2=`ninca-common`(external)
- `feign.component-organization.name`: V1=`ninca-common-component-organization`(external) | V2=`ninca-common-component-organization`(external)
- `cwos-portal.ribbon.NIWSServerListClassName`: V1=`<unset>`(unset) | V2=`<unset>`(unset)
- `cwos-portal.ribbon.listOfServers`: V1=`<unset>`(unset) | V2=`<unset>`(unset)
## 前50个全量差异
- `cloudwalk.event.bootstrap-servers`: V1=`10.128.161.95:9092` | V2=`371bfca4972c43d2aefcf302d0a4a277:9092,44700995ee904679a7ad5afddcf93bb5:9092,0837a70b5fab47569391828f5feb2561:9092`
- `dubbo.registry.address`: V1=`zookeeper://10.128.161.95:2181` | V2=`zookeeper://10.0.22.207:2181`
- `logging.path`: V1=`logs` | V2=`/data/cwos/cw-elevator-application-V1.0.0.20211103/logs`
- `ninca-crk-std.ip`: V1=`10.128.161.95:16106` | V2=`10.0.22.102:16106`
- `spring.cloud.consul.host`: V1=`10.128.161.95` | V2=`371bfca4972c43d2aefcf302d0a4a277`
- `spring.redis.host`: V1=`127.0.0.1` | V2=`redis_01.redis_ip`
- `spring.shardingsphere.datasource.ds0.jdbc-url`: V1=`jdbc:mysql://192.168.3.12:3307/cw-elevator-application?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf-8&useSSL=false&allowMultiQueries=true` | V2=`jdbc:mysql://mysql_01.mysql_ip:3306/cw-elevator-application?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf-8&useSSL=false&allowMultiQueries=true`
- `spring.shardingsphere.datasource.ds0.password`: V1=`123456` | V2=`1qaz!QAZ`
- `spring.shardingsphere.datasource.ds0.username`: V1=`root` | V2=`cloudwalk`
- `spring.shardingsphere.sharding.tables.IT_ACS_ELEVATOR_RECORD.actual-data-nodes`: V1=`ds0.IT_ACS_ELEVATOR_RECORD_$->{2020..2022}` | V2=`ds0.IT_ACS_ELEVATOR_RECORD_$->{2020..2030}`
- `spring.shardingsphere.sharding.tables.IT_ACS_RECOG_RECORD.actual-data-nodes`: V1=`ds0.IT_ACS_RECOG_RECORD_$->{2020..2022}` | V2=`ds0.IT_ACS_RECOG_RECORD_$->{2020..2030}`
@@ -0,0 +1,219 @@
{
"tag": "V2.0.4",
"base_dir": "/media/zebra/9e8fa357-7db6-4d70-88ed-d5de5a059a663/星河湾星中星/反编译/maven-cw-elevator-application/deploy/v2-maven",
"jar": "/media/zebra/9e8fa357-7db6-4d70-88ed-d5de5a059a663/星河湾星中星/反编译/maven-cw-elevator-application/releases/v2.0.4/cw-elevator-application-2.0.4.jar",
"order_assumption": "external > jar (未显式spring.config.location时)",
"file_presence": {
"bootstrap.properties": {
"external": true,
"jar": true
},
"application.properties": {
"external": true,
"jar": true
},
"application-access-control.properties": {
"external": true,
"jar": true
}
},
"focus_keys": {
"spring.application.name": {
"value": "elevator-app",
"source": "external"
},
"spring.profiles.active": {
"value": "access-control",
"source": "external"
},
"spring.cloud.consul.host": {
"value": "10.0.22.102",
"source": "external"
},
"spring.cloud.consul.port": {
"value": "8500",
"source": "external"
},
"spring.cloud.consul.enabled": {
"value": "true",
"source": "external"
},
"spring.cloud.consul.discovery.enabled": {
"value": "true",
"source": "external"
},
"spring.cloud.consul.discovery.register": {
"value": "true",
"source": "external"
},
"spring.cloud.consul.config.enabled": {
"value": "<unset>",
"source": "unset"
},
"feign.cwos-portal.name": {
"value": "cwos-portal",
"source": "external"
},
"feign.ninca-common.name": {
"value": "ninca-common",
"source": "external"
},
"feign.component-organization.name": {
"value": "ninca-common-component-organization",
"source": "external"
},
"cwos-portal.ribbon.NIWSServerListClassName": {
"value": "<unset>",
"source": "unset"
},
"cwos-portal.ribbon.listOfServers": {
"value": "<unset>",
"source": "unset"
},
"ninca-common.ribbon.NIWSServerListClassName": {
"value": "<unset>",
"source": "unset"
},
"ninca-common.ribbon.listOfServers": {
"value": "<unset>",
"source": "unset"
}
},
"effective_all_keys": {
"spring.cloud.consul.discovery.enabled": "true",
"feign.ninca-common.name": "ninca-common",
"ninca.update.floor.pool.allowCoreThreadTimeOut": "true",
"sendRecord.token.appKey": "293e2d708f0143c2957b702cef44d951",
"ninca.update.floor.pool.corePoolSize": "5",
"cloudwalk.access-control.common.device-category-array[0]": "4",
"cloudwalk.access-control.common.device-category-array[5]": "11",
"feign.component-organization.name": "ninca-common-component-organization",
"hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds": "10000",
"spring.cloud.consul.discovery.instance-id": "${spring.application.name}-${spring.cloud.client.ipAddress}:${server.port}",
"spring.redis.timeout": "0",
"spring.messages.basename": "access-control",
"spring.shardingsphere.datasource.ds0.type": "com.zaxxer.hikari.HikariDataSource",
"spring.cloud.consul.discovery.register": "true",
"spring.shardingsphere.sharding.tables.IT_ACS_ELEVATOR_RECORD.table-strategy.standard.precise-algorithm-class-name": "cn.cloudwalk.elevator.YearlyShardingAlgorithm",
"cloudwalk.datafield.securityKey": "d4b2aabc97394a12a27fc3cca6cd9ba1",
"cloudwalk.access-control.common.publish-opendoor-service-code": "access-control",
"spring.shardingsphere.datasource.ds0.maximum-pool-size": "20",
"cloudwalk.serial.enable": "true",
"cloudwalk.access-control.common.device-category-array[1]": "5",
"spring.redis.host": "redis_01.redis_ip",
"spring.shardingsphere.datasource.ds0.pool-name": "ds0-pool",
"person.name.space": "recordEvent",
"spring.profiles.active": "access-control",
"management.health.redis.enabled": "false",
"management.health.db.enabled": "false",
"cloudwalk.serial.serial-redis-key": "CLOUDWALK-ACS-SERIAL-KEY",
"spring.application.name": "elevator-app",
"dubbo.protocol.port": "16107",
"spring.shardingsphere.datasource.ds0.driver-class-name": "com.mysql.jdbc.Driver",
"spring.shardingsphere.sharding.binding-tables": "IT_ACS_ELEVATOR_RECORD,IT_ACS_RECOG_RECORD",
"spring.cloud.consul.discovery.prefer-ip-address": "true",
"cloudwalk.event.bootstrap-servers": "371bfca4972c43d2aefcf302d0a4a277:9092,44700995ee904679a7ad5afddcf93bb5:9092,0837a70b5fab47569391828f5feb2561:9092",
"cloudwalk.access-control.common.face-compare-THRESHOLD": "80",
"spring.http.encoding.charset": "UTF-8",
"spring.shardingsphere.datasource.ds0.password": "1qaz!QAZ",
"mybatis.mapper-locations": "classpath*:cn/cloudwalk/elevator/**/*.xml",
"ribbon.ReadTimeout": "10000",
"lockWatchdogTimeout": "21000",
"cloudwalk.elevator.common.relativePrefix": "/cwos-portal/portal/fileManager/imgByPath?path=",
"spring.shardingsphere.props.sql.show": "false",
"intelligent.lock.enable": "true",
"mybatis.config-location": "classpath:mapper/mybatis-config.xml",
"spring.redis.pool.max-idle": "1",
"spring.cloud.consul.host": "10.0.22.102",
"feign.ninca-crk-std.name": "ninca-crk-std",
"cloudwalk.access-control.common.face-capture-interval-milliseconds": "3000",
"spring.redis.pool.max-wait": "10",
"elevator.application.time": "600",
"dubbo.provider.version": "1.0",
"feign.hystrix.enable": "true",
"spring.shardingsphere.datasource.ds0.auto-commit": "true",
"cloudwalk.serial.serial-length": "8",
"spring.mvc.throw-exception-if-no-handler-found": "true",
"cloudwalk.access-control.schedual.jobs.AcsRecordStatisticsByDayJob.executable-class": "cn.cloudwalk.service.ninca.accesscontrol.common.job.executable.AcsRecordStatisticsByDayJob",
"cloudwalk.access-control.common.device-category-array[2]": "7",
"spring.shardingsphere.sharding.tables.IT_ACS_RECOG_RECORD.actual-data-nodes": "ds0.IT_ACS_RECOG_RECORD_$->{2020..2030}",
"floor.building.id": "605560539791228928",
"spring.shardingsphere.datasource.ds0.jdbc-url": "jdbc:mysql://mysql_01.mysql_ip:3306/cw-elevator-application?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf-8&useSSL=false&allowMultiQueries=true",
"feign.mqtt.name": "cloudwalk-device-thirdparty",
"sendRecord.token.corpId": "53db867a8bb747a1bd04dd1afcad8ca6",
"spring.messages.encoding": "utf-8",
"cloudwalk.serial.serial-type": "redis",
"spring.shardingsphere.sharding.default-data-source-name": "ds0",
"cloudwalk.access-control.common.face-capture-time-expired-milliseconds": "300000",
"elevator.application.keyA": "5B7DEF88FF04",
"spring.http.encoding.force": "true",
"spring.redis.pool.max-active": "10",
"cloudwalk.access-control.schedual.jobs.AcsRecordStatisticsByDayJob.priority": "1",
"ninca.update.floor.pool.queueCapacity": "100000",
"ribbon.ConnectTimeout": "10000",
"cloudwalk.access-control.common.device-atrr-map.ACS_FACE_REG_THRESHOLD": "75",
"spring.http.multipart.max-request-size": "200MB",
"logging.config": "classpath:logs/logback.xml",
"cloudwalk.access-control.schedual.jobs.AcsRecordStatisticsByDayJob.group": "ACCESS-CONTROL_GROUP",
"cloudwalk.datafield.encrypt": "AES",
"spring.http.multipart.max-file-size": "200MB",
"dubbo.registry.address": "zookeeper://10.0.22.207:2181",
"spring.shardingsphere.sharding.tables.IT_ACS_RECOG_RECORD.table-strategy.standard.precise-algorithm-class-name": "cn.cloudwalk.elevator.YearlyShardingAlgorithm",
"logging.path": "/data/cwos/cw-elevator-application-V1.0.0.20211103/logs",
"server.port": "16112",
"cloudwalk.access-control.common.device-controller-array[0]": "mqtt",
"spring.cloud.consul.discovery.deregister": "false",
"spring.shardingsphere.sharding.tables.IT_ACS_RECOG_RECORD.table-strategy.standard.range-algorithm-class-name": "cn.cloudwalk.elevator.YearlyShardingAlgorithm",
"cloudwalk.access-control.common.device-category-array[3]": "2",
"spring.shardingsphere.datasource.ds0.minimum-idle": "5",
"spring.shardingsphere.datasource.names": "ds0",
"sendRecord.token.appSecret": "5f6995009b864669b52041b8f5dc4625",
"logging.level.root": "info",
"intelligent.lock.config.default-wait-time": "10000",
"spring.cloud.consul.port": "8500",
"logging.file": "${spring.application.name}",
"ribbon.okhttp.enabled": "true",
"cloudwalk.access-control.schedual.jobs.AcsRecordStatisticsByDayJob.cron-expression": "0 10 0 * * ?",
"feign.davinci-portal.name": "cwos-portal",
"sendRecord.boolean": "true",
"ninca-crk-std.ip": "10.0.22.102:16106",
"spring.mvc.locale": "zh_CN",
"cloudwalk.access-control.schedual.jobs.AcsRecordStatisticsByDayJob.description": "AcsRecordStatisticsByDay job is starting.........",
"spring.shardingsphere.sharding.tables.IT_ACS_ELEVATOR_RECORD.table-strategy.standard.range-algorithm-class-name": "cn.cloudwalk.elevator.YearlyShardingAlgorithm",
"feign.resource.name": "cwos-portal",
"spring.redis.port": "6379",
"cloudwalk.datafield.enable": "true",
"logging.level.cn.cloudwalk": "info",
"cloudwalk.event.group-id": "cw-elevator-application-1",
"cloudwalk.access-control.common.face-capture-open-door-fail-milliseconds": "600000",
"spring.shardingsphere.datasource.ds0.username": "cloudwalk",
"cloudwalk.spring.cache.expires": "CACHE_NAME_APPLICATIONIDS#21600,ACS_DeviceTypesCache#7200,ACS_DeviceTypeFeaturesCache#7200,ACS_DeviceAttrsCache#7200,ACS_RecordStatisticsCache#90000,ACS_AreaTreeCache#60",
"spring.messages.always-use-message-format": "true",
"spring.redis.database": "5",
"spring.shardingsphere.datasource.ds0.max-lifetime": "1765000",
"cloudwalk.access-control.common.device-category-array[4]": "8",
"cloudwalk.access-control.common.publish-opendoor-switch": "false",
"feign.device.name": "cwos-portal",
"feign.cwos-portal.name": "cwos-portal",
"ninca.update.floor.pool.maxPoolSize": "5",
"spring.cloud.consul.enabled": "true",
"sendRecord.ip": "hrec.star-river.com:32165",
"cloudwalk.access-control.schedual.jobs.AcsRecordStatisticsByDayJob.name": "AcsRecordStatisticsByDayJob",
"cloudwalk.event.handler-executor-config.core-pool-size": "10",
"elevator.application.key": "xinghewan",
"ninca.update.floor.pool.keepAliveSeconds": "150",
"spring.redis.pool.min-idle": "0",
"spring.cloud.consul.discovery.ip-address": "${spring.cloud.client.ipAddress}",
"feign.okhttp.enable": "true",
"spring.shardingsphere.sharding.tables.IT_ACS_ELEVATOR_RECORD.table-strategy.standard.sharding-column": "RECOGNITION_TIME",
"spring.shardingsphere.datasource.ds0.connection-timeout": "60000",
"cloudwalk.event.handler-executor-config.maximum-pool-size": "30",
"spring.shardingsphere.sharding.tables.IT_ACS_RECOG_RECORD.table-strategy.standard.sharding-column": "RECOGNITION_TIME",
"feign.httpclient.enable": "false",
"spring.http.encoding.enabled": "true",
"ribbon.http.client.enabled": "false",
"spring.redis.password": "1qaz!QAZ",
"spring.shardingsphere.sharding.tables.IT_ACS_ELEVATOR_RECORD.actual-data-nodes": "ds0.IT_ACS_ELEVATOR_RECORD_$->{2020..2030}",
"server.tomcat.uri-encoding": "UTF-8"
}
}
@@ -0,0 +1,195 @@
{
"tag": "V2.0.4-with-V1-props",
"base_dir": "/media/zebra/9e8fa357-7db6-4d70-88ed-d5de5a059a663/星河湾星中星/反编译/maven-cw-elevator-application/deploy/v2-maven",
"jar": "/media/zebra/9e8fa357-7db6-4d70-88ed-d5de5a059a663/星河湾星中星/反编译/maven-cw-elevator-application/releases/v2.0.4/cw-elevator-application-2.0.4.jar",
"order": "external>jar",
"file_presence": {
"bootstrap.properties": {
"external": true,
"jar": true
},
"application.properties": {
"external": true,
"jar": true
},
"application-access-control.properties": {
"external": true,
"jar": true
}
},
"focus_keys": {
"spring.cloud.consul.host": {
"value": "371bfca4972c43d2aefcf302d0a4a277",
"source": "external"
},
"spring.cloud.consul.port": {
"value": "8500",
"source": "external"
},
"spring.cloud.consul.discovery.enabled": {
"value": "false",
"source": "external"
},
"spring.cloud.consul.config.enabled": {
"value": "<unset>",
"source": "unset"
},
"feign.cwos-portal.name": {
"value": "cwos-portal",
"source": "external"
},
"feign.ninca-common.name": {
"value": "ninca-common",
"source": "external"
},
"feign.component-organization.name": {
"value": "ninca-common-component-organization",
"source": "external"
},
"cwos-portal.ribbon.NIWSServerListClassName": {
"value": "<unset>",
"source": "unset"
},
"cwos-portal.ribbon.listOfServers": {
"value": "<unset>",
"source": "unset"
}
},
"effective_all_keys": {
"logging.level.root": "info",
"logging.config": "classpath:logs/logback.xml",
"management.health.redis.enabled": "false",
"hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds": "10000",
"cloudwalk.event.handler-executor-config.core-pool-size": "10",
"spring.cloud.consul.discovery.instance-id": "${spring.application.name}-${spring.cloud.client.ipAddress}:${server.port}",
"ninca.update.floor.pool.queueCapacity": "100000",
"person.name.space": "recordEvent",
"spring.redis.pool.max-active": "10",
"spring.cloud.consul.discovery.enabled": "false",
"sendRecord.token.appSecret": "5f6995009b864669b52041b8f5dc4625",
"spring.cloud.consul.enabled": "true",
"ninca.update.floor.pool.maxPoolSize": "5",
"cloudwalk.serial.serial-length": "8",
"server.port": "16112",
"spring.shardingsphere.datasource.names": "ds0",
"spring.redis.password": "1qaz!QAZ",
"elevator.application.key": "xinghewan",
"spring.mvc.throw-exception-if-no-handler-found": "true",
"logging.file": "${spring.application.name}",
"feign.component-organization.name": "ninca-common-component-organization",
"cloudwalk.spring.cache.expires": "CACHE_NAME_APPLICATIONIDS#21600,ACS_DeviceTypesCache#7200,ACS_DeviceTypeFeaturesCache#7200,ACS_DeviceAttrsCache#7200,ACS_RecordStatisticsCache#90000,ACS_AreaTreeCache#60",
"feign.mqtt.name": "cloudwalk-device-thirdparty",
"spring.shardingsphere.datasource.ds0.connection-timeout": "60000",
"ninca.update.floor.pool.keepAliveSeconds": "150",
"feign.cwos-portal.name": "cwos-portal",
"spring.shardingsphere.datasource.ds0.password": "1qaz!QAZ",
"spring.shardingsphere.sharding.tables.IT_ACS_ELEVATOR_RECORD.table-strategy.standard.sharding-column": "RECOGNITION_TIME",
"spring.shardingsphere.sharding.tables.IT_ACS_ELEVATOR_RECORD.table-strategy.standard.precise-algorithm-class-name": "cn.cloudwalk.elevator.YearlyShardingAlgorithm",
"floor.building.id": "605560539791228928",
"spring.messages.basename": "access-control",
"spring.cloud.consul.port": "8500",
"ribbon.http.client.enabled": "false",
"sendRecord.ip": "hrec.star-river.com:32165",
"cloudwalk.access-control.schedual.jobs.AcsRecordStatisticsByDayJob.cron-expression": "0 10 0 * * ?",
"sendRecord.token.corpId": "53db867a8bb747a1bd04dd1afcad8ca6",
"cloudwalk.serial.serial-redis-key": "CLOUDWALK-ACS-SERIAL-KEY",
"cloudwalk.datafield.enable": "true",
"elevator.application.time": "600",
"cloudwalk.access-control.common.device-category-array[5]": "11",
"spring.messages.always-use-message-format": "true",
"spring.mvc.locale": "zh_CN",
"feign.ninca-crk-std.name": "ninca-crk-std",
"sendRecord.token.appKey": "293e2d708f0143c2957b702cef44d951",
"ribbon.ConnectTimeout": "10000",
"spring.cloud.consul.discovery.deregister": "false",
"spring.redis.timeout": "0",
"spring.shardingsphere.sharding.default-data-source-name": "ds0",
"spring.redis.database": "5",
"cloudwalk.access-control.schedual.jobs.AcsRecordStatisticsByDayJob.executable-class": "cn.cloudwalk.service.ninca.accesscontrol.common.job.executable.AcsRecordStatisticsByDayJob",
"cloudwalk.access-control.schedual.jobs.AcsRecordStatisticsByDayJob.description": "AcsRecordStatisticsByDay job is starting.........",
"logging.level.cn.cloudwalk": "info",
"cloudwalk.access-control.schedual.jobs.AcsRecordStatisticsByDayJob.priority": "1",
"spring.profiles.active": "access-control",
"spring.http.encoding.force": "true",
"spring.redis.pool.max-wait": "10",
"cloudwalk.access-control.common.device-controller-array[0]": "mqtt",
"cloudwalk.event.group-id": "cw-elevator-application-1",
"spring.shardingsphere.sharding.tables.IT_ACS_RECOG_RECORD.table-strategy.standard.precise-algorithm-class-name": "cn.cloudwalk.elevator.YearlyShardingAlgorithm",
"sendRecord.boolean": "true",
"logging.path": "/data/cwos/cw-elevator-application-V1.0.0.20211103/logs",
"ribbon.okhttp.enabled": "true",
"spring.shardingsphere.datasource.ds0.username": "cloudwalk",
"spring.redis.port": "6379",
"feign.hystrix.enable": "true",
"spring.http.multipart.max-request-size": "200MB",
"feign.device.name": "cwos-portal",
"elevator.application.keyA": "5B7DEF88FF04",
"cloudwalk.datafield.securityKey": "d4b2aabc97394a12a27fc3cca6cd9ba1",
"spring.cloud.consul.discovery.ip-address": "${spring.cloud.client.ipAddress}",
"cloudwalk.access-control.common.device-atrr-map.ACS_FACE_REG_THRESHOLD": "75",
"cloudwalk.access-control.common.face-compare-THRESHOLD": "80",
"cloudwalk.datafield.encrypt": "AES",
"management.health.db.enabled": "false",
"server.tomcat.uri-encoding": "UTF-8",
"spring.shardingsphere.datasource.ds0.max-lifetime": "1765000",
"mybatis.mapper-locations": "classpath*:cn/cloudwalk/elevator/**/*.xml",
"intelligent.lock.config.default-wait-time": "10000",
"spring.shardingsphere.sharding.tables.IT_ACS_RECOG_RECORD.table-strategy.standard.sharding-column": "RECOGNITION_TIME",
"ninca.update.floor.pool.corePoolSize": "5",
"spring.http.multipart.max-file-size": "200MB",
"ribbon.ReadTimeout": "10000",
"cloudwalk.access-control.common.device-category-array[2]": "7",
"cloudwalk.access-control.common.publish-opendoor-switch": "false",
"dubbo.provider.version": "1.0",
"spring.shardingsphere.sharding.tables.IT_ACS_ELEVATOR_RECORD.actual-data-nodes": "ds0.IT_ACS_ELEVATOR_RECORD_$->{2020..2030}",
"spring.cloud.consul.host": "371bfca4972c43d2aefcf302d0a4a277",
"cloudwalk.access-control.common.face-capture-open-door-fail-milliseconds": "600000",
"cloudwalk.access-control.common.device-category-array[3]": "2",
"feign.davinci-portal.name": "cwos-portal",
"spring.shardingsphere.datasource.ds0.pool-name": "ds0-pool",
"cloudwalk.elevator.common.relativePrefix": "/cwos-portal/portal/fileManager/imgByPath?path=",
"spring.redis.host": "redis_01.redis_ip",
"spring.shardingsphere.props.sql.show": "false",
"spring.shardingsphere.sharding.binding-tables": "IT_ACS_ELEVATOR_RECORD,IT_ACS_RECOG_RECORD",
"spring.shardingsphere.sharding.tables.IT_ACS_RECOG_RECORD.table-strategy.standard.range-algorithm-class-name": "cn.cloudwalk.elevator.YearlyShardingAlgorithm",
"spring.shardingsphere.datasource.ds0.auto-commit": "true",
"spring.messages.encoding": "utf-8",
"spring.redis.pool.min-idle": "0",
"spring.shardingsphere.datasource.ds0.jdbc-url": "jdbc:mysql://mysql_01.mysql_ip:3306/cw-elevator-application?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf-8&useSSL=false&allowMultiQueries=true",
"spring.application.name": "elevator-app",
"cloudwalk.serial.serial-type": "redis",
"feign.okhttp.enable": "true",
"mybatis.config-location": "classpath:mapper/mybatis-config.xml",
"spring.redis.pool.max-idle": "1",
"cloudwalk.access-control.common.face-capture-interval-milliseconds": "3000",
"cloudwalk.serial.enable": "true",
"spring.cloud.consul.discovery.prefer-ip-address": "true",
"cloudwalk.access-control.common.face-capture-time-expired-milliseconds": "300000",
"dubbo.protocol.port": "16107",
"intelligent.lock.enable": "true",
"lockWatchdogTimeout": "21000",
"spring.shardingsphere.sharding.tables.IT_ACS_RECOG_RECORD.actual-data-nodes": "ds0.IT_ACS_RECOG_RECORD_$->{2020..2030}",
"ninca.update.floor.pool.allowCoreThreadTimeOut": "true",
"cloudwalk.access-control.schedual.jobs.AcsRecordStatisticsByDayJob.group": "ACCESS-CONTROL_GROUP",
"spring.cloud.consul.discovery.register": "true",
"feign.httpclient.enable": "false",
"spring.shardingsphere.datasource.ds0.driver-class-name": "com.mysql.jdbc.Driver",
"spring.http.encoding.charset": "UTF-8",
"ninca-crk-std.ip": "10.0.22.102:16106",
"spring.http.encoding.enabled": "true",
"spring.shardingsphere.sharding.tables.IT_ACS_ELEVATOR_RECORD.table-strategy.standard.range-algorithm-class-name": "cn.cloudwalk.elevator.YearlyShardingAlgorithm",
"cloudwalk.event.handler-executor-config.maximum-pool-size": "30",
"spring.shardingsphere.datasource.ds0.minimum-idle": "5",
"spring.shardingsphere.datasource.ds0.maximum-pool-size": "20",
"cloudwalk.event.bootstrap-servers": "371bfca4972c43d2aefcf302d0a4a277:9092,44700995ee904679a7ad5afddcf93bb5:9092,0837a70b5fab47569391828f5feb2561:9092",
"spring.shardingsphere.datasource.ds0.type": "com.zaxxer.hikari.HikariDataSource",
"dubbo.registry.address": "zookeeper://10.0.22.207:2181",
"feign.ninca-common.name": "ninca-common",
"feign.resource.name": "cwos-portal",
"cloudwalk.access-control.common.device-category-array[4]": "8",
"cloudwalk.access-control.common.device-category-array[0]": "4",
"cloudwalk.access-control.schedual.jobs.AcsRecordStatisticsByDayJob.name": "AcsRecordStatisticsByDayJob",
"cloudwalk.access-control.common.device-category-array[1]": "5",
"cloudwalk.access-control.common.publish-opendoor-service-code": "access-control"
}
}
@@ -0,0 +1,109 @@
# Consul 可访问且「有清单」仍拿不到 IP/端口 — 走查结果(证据执行)
**证据根**[`maven-cw-elevator-application/logs/evidence/`](../../maven-cw-elevator-application/logs/evidence/)
**主日志**[`elevator-app.log`](../../maven-cw-elevator-application/logs/evidence/elevator-app.log)
**配置探针**[`elevator-app-probe.log`](../../maven-cw-elevator-application/logs/evidence/elevator-app-probe.log)
**Consul 快照(示例)**[`elevator-evidence-20260430-113912/consul-health-ninca-common-component-organization.json`](../../maven-cw-elevator-application/logs/evidence/elevator-evidence-20260430-113912/consul-health-ninca-common-component-organization.json)
本文对应走查计划的四项核对:**客户端名**、**Ribbon 初始化时序**、**ConsulServerList vs ConfigurationBased**、**bootstrap 多源合并**。结论与 [`elevator-evidence-v1-v2-diff-20260430.md`](elevator-evidence-v1-v2-diff-20260430.md) §6–§10、[`elevator-service-instance-missing-investigation.md`](elevator-service-instance-missing-investigation.md) 一致并细化到可 grep 的行级证据。
### 本服务是否注册到 Consul、与探针日志
- **拉不到上游 IP** 常见原因是 **Ribbon 客户端名 / listOfServers / 时序**(见下文),**不等价于**本机未注册;但仍应单独核实 **本进程** 在 Consul 的登记名是否与 `spring.application.name` 一致、健康是否 **passing**
- 诊断探针 **默认始终运行**(无 `elevator.*.probe` 开关);Consul HTTP 首次延迟见源码 [`ElevatorProbeConstants`](../../maven-cw-elevator-application/cw-elevator-application-starter/src/main/java/cn/cloudwalk/elevator/debug/ElevatorProbeConstants.java)。[`ConsulUpstreamHealthProbeRunner`](../../maven-cw-elevator-application/cw-elevator-application-starter/src/main/java/cn/cloudwalk/elevator/debug/ConsulUpstreamHealthProbeRunner.java) 会请求本服务 **`/v1/health/service/<spring.application.name>`**`passing=true` 与全量各一遍,并 **逐实例** DEBUG)、上游同名列表,以及 **`/v1/agent/self`**。
- [`RibbonLoadBalancerProbeRunner`](../../maven-cw-elevator-application/cw-elevator-application-starter/src/main/java/cn/cloudwalk/elevator/debug/RibbonLoadBalancerProbeRunner.java) 在同一延迟窗口输出各 client 的 **`ServerList` 实现类**、`ILoadBalancer`、**`DiscoveryClient.getInstances`**(本服务 + `ElevatorUpstreamServiceNames`)明细。
- [`logback.xml`](../../maven-cw-elevator-application/cw-elevator-application-starter/src/main/resources/logs/logback.xml) 将 **`org.springframework.cloud.consul`**、**`com.netflix.loadbalancer`**、**`org.springframework.cloud.client.discovery`** 与 **`cn.cloudwalk.elevator.debug`** 均按 **DEBUG** **双写**到 **`${logging.file}-probe.log`**(与自建 `consulProbe` / `ribbonProbe` / `discoveryProbe` 及框架行对照)。
---
## 1. 报错栈中的 Ribbon client 名 vs Consul 注册名
**核对方法**:在出错 JVM 日志中搜索 **`Load balancer does not have available server for client:`** 或 **`for client:`**,将后缀字符串与 Consul UI / `/v1/health/service/<name>`**Service** 名 **逐字**比对(含 `ninca-common-` 前缀)。
### 本仓库证据包结论
| 项目 | 结论 |
|------|------|
| `for client:` 在本份 `elevator-app.log` 中 | **仅出现** `ninca-crk-std`(大量重复),**未出现** `component-organization` |
| Feign 逻辑名 `component-organization` | `feign.component-organization.name=ninca-common-component-organization`(探针:`file:``classpath:` 均为该值) |
| Ribbon 实际客户端名 | `Client: ninca-common-component-organization``ConsulServerList{serviceId='ninca-common-component-organization'}` |
| Consul | `ninca-common-component-organization` 健康快照为 **3** 个 passing 实例,与日志中三台 `:17016` 一致 |
**与人对齐时的表述**:若微信群截图写 **`for client: component-organization`**,而本电梯进程配置将 Feign **解析服务名**设为 **`ninca-common-component-organization`**,则二者 **不是** 同一 Ribbon client;对方环境若在 **`component-organization`** 名下查实例会得到 **0 台**,即使 Consul 里注册的是 **`ninca-common-component-organization`**。结论:**先看报错里的精确 client 字符串**,再对 Consul 注册名。
---
## 2. DynamicServerListLoadBalancer 初始化与 `Servers=[]` 时间序
**核对方法**:对关心的 client 搜索 **`DynamicServerListLoadBalancer for client <name> initialized`**,并向上查看同一 client 的 **`current list of Servers=[...]`**;若在列表仍为空窗口内发生首次 Feign 调用,会抛 **no available server**
### `ninca-common-component-organization`Consul 路径)
| 时间(日志) | 事件 |
|--------------|------|
| `11:16:33.087` | `Client: ninca-common-component-organization`,首次 `current list of Servers=[]``ServerList:null` |
| `11:16:33.097` | `DynamicServerListLoadBalancer for client ninca-common-component-organization initialized`,已为 **3 台** `:17016``ConsulServerList{serviceId='ninca-common-component-organization'}` |
**10ms** 内由空列表变为三台;若首次 RPC 落在此窗口仍可能失败(计划中的「首轮请求早于填充」风险)。
### `ninca-crk-std`ConfigurationBased 路径)
| 时间(日志) | 事件 |
|--------------|------|
| `11:16:34.109` | `Client: ninca-crk-std``Servers=[]``ServerList:null` |
| `11:16:34.111` | `DynamicServerListLoadBalancer for client ninca-crk-std initialized`**仍为** `Servers=[]``ServerList:ConfigurationBasedServerList` |
| `11:16:34.346` 起 | 连续 **`no available server for client: ninca-crk-std`** |
本证据包中 **no-server 全部归因于 `ninca-crk-std`**,且发生在 **`ninca-common-component-organization` 已填充三台之后**,说明主因不是「Consul 查错 organization 名」,而是 **`ninca-crk-std` 的静态 Ribbon 列表未配置**(见下节)。
同一全量日志内 **第二次启动**(约 `11:43`)后 `ninca-crk-std` 可出现非空列表,详见 [`elevator-evidence-v1-v2-diff-20260430.md`](elevator-evidence-v1-v2-diff-20260430.md) §6.2。
---
## 3. ConsulServerList 与 ConfigurationBasedServerList`ninca-crk-std` 与 `listOfServers` / `ip`
| 客户端 | ServerList 实现 | 列表来源 |
|--------|-----------------|----------|
| `ninca-common-component-organization` | `ConsulServerList` | Consul `serviceId=ninca-common-component-organization` |
| `ninca-crk-std` | `ConfigurationBasedServerList` | Ribbon 属性(如 `ninca-crk-std.ribbon.listOfServers`),**不**自动使用 `ninca-crk-std.ip` |
代码侧:[`NincaCrkStdRibbonConfiguration`](../../maven-cw-elevator-application/cw-elevator-application-starter/src/main/java/cn/cloudwalk/ribbon/NincaCrkStdRibbonConfiguration.java) 为 `ninca-crk-std` 固定注册 `ConfigurationBasedServerList`
**探针(`elevator-app-probe.log`):**
- `ninca-crk-std.ribbon.listOfServers value=null`
- `ninca-crk-std.ip=10.0.22.102:16106``file:` / `classpath:` 一致)
因此即 Consul 上 `ninca-crk-std` **passing=3**Ribbon 仍可能 **`Servers=[]`**,与 Consul 是否正常无关,除非另行配置 **`ribbon.listOfServers`** 或改变 ServerList 策略。部署模板对照:V1 legacy 含显式 `ninca-crk-std.ribbon.listOfServers` 段;V2 模板以 `ninca-crk-std.ip` 为主,见 [`deploy/v1-legacy/application.properties`](../../maven-cw-elevator-application/deploy/v1-legacy/application.properties) 与 [`deploy/v2-maven/application.properties`](../../maven-cw-elevator-application/deploy/v2-maven/application.properties)。
---
## 4. `file:./bootstrap` 与 `classpath:/bootstrap` 对 Consul 的合并结果
**来源**[`elevator-app-probe.log`](../../maven-cw-elevator-application/logs/evidence/elevator-app-probe.log) 中 `ConfigSourceProbeRunner` 行。
| 键 | Environment 合并结果 | `file:./bootstrap.properties` | `classpath:/bootstrap.properties` |
|----|------------------------|--------------------------------|-------------------------------------|
| `spring.cloud.consul.host` | `10.0.22.102` | `10.0.22.102` | 主机名(与磁盘不一致) |
| `spring.cloud.consul.discovery.enabled` | `true` | `true` | `false` |
**走查要点**:以 **`spring.application.*` 合并后的 `value=`** 为准核对「进程连的 Consul」是否与运维在浏览器里看的地址一致;磁盘与 jar 内嵌 bootstrap **并存**时,以最终 Environment 为准(本样本下 host 为 **10.0.22.102**、发现 **启用**)。证据目录内亦有 [`bootstrap.properties`](../../maven-cw-elevator-application/logs/evidence/elevator-evidence-20260430-113912/bootstrap.properties) 快照可与现场比对。
---
## 5. 建议的可复现 grep(本地)
```bash
# 锁定所有「for client:」后的客户端名(去重)
grep -E 'for client:' maven-cw-elevator-application/logs/evidence/elevator-app.log | sed -n 's/.*for client: \([^ ]*\).*/\1/p' | sort -u
# 各客户端初始化与非空列表
grep 'DynamicServerListLoadBalancer for client' maven-cw-elevator-application/logs/evidence/elevator-app.log
# 区分 Consul 与配置型列表
grep -E 'ConsulServerList|ConfigurationBasedServerList' maven-cw-elevator-application/logs/evidence/elevator-app.log
```
---
**延伸阅读**[`elevator-v1-v2-init-timing-config-audit.md`](elevator-v1-v2-init-timing-config-audit.md)(初始化顺序与探针)、[`elevator-evidence-v1-v2-diff-20260430.md`](elevator-evidence-v1-v2-diff-20260430.md) §9`listOfServers` vs `ninca-crk-std.ip`)。
@@ -0,0 +1,46 @@
# 从 multiset 差值中扣减「仅 V1 基准包多出」的条目(每行一条坐标或 unresolved:文件名,末尾可选次数,默认 1)。
# 产品线模块保留 2.0-SNAPSHOT,不自降级为 1.0-SNAPSHOT。
cn.cloudwalk.elevator:cw-elevator-application-common:1.0-SNAPSHOT 1
cn.cloudwalk.elevator:cw-elevator-application-data:1.0-SNAPSHOT 1
cn.cloudwalk.elevator:cw-elevator-application-service:1.0-SNAPSHOT 1
cn.cloudwalk.elevator:cw-elevator-application-web:1.0-SNAPSHOT 1
# V1 运行包误入的 Maven/Mojo 构建泄漏(V2 故意不打入)
org.apache.maven.wagon:wagon-provider-api:1.0-beta-2 1
org.apache.maven:maven-artifact-manager:2.0.5 1
org.apache.maven:maven-artifact:2.0.5 1
org.apache.maven:maven-model:2.0.5 1
org.apache.maven:maven-plugin-api:2.0.5 1
org.apache.maven:maven-profile:2.0.5 1
org.apache.maven:maven-project:2.0.5 1
org.apache.maven:maven-repository-metadata:2.0.5 1
org.apache.maven:maven-settings:2.0.5 1
org.codehaus.plexus:plexus-container-default:1.0-alpha-9 1
org.codehaus.plexus:plexus-utils:1.1 1
org.jfrog.jade.plugins.common:jade-plugin-common:1.3.8 1
org.jfrog.maven.annomojo:maven-plugin-anno:1.4.1 1
org.reflections:reflections-maven:0.9.9-RC2 1
# 私服父 POM 不可解析,运行时亦不强制依赖
org.springside:springside-core:4.2.3-GA 1
# V1 嵌套 jar 无 pom.properties,脚本记为 unresolved;与 V2 侧解析坐标不对等时放行
unresolved:annotations-2.0.0.jar 1
unresolved:ant-1.6.5.jar 1
unresolved:ant-apache-bsf-1.9.4.jar 1
unresolved:ant-jakarta-oro-1.6.1.jar 1
unresolved:ant-nodeps-1.8.1.jar 1
unresolved:asm-5.0.3.jar 1
unresolved:asm-analysis-5.0.3.jar 1
unresolved:asm-tree-5.0.3.jar 1
unresolved:asm-util-5.0.3.jar 1
unresolved:bsf-2.4.0.jar 1
unresolved:classworlds-1.1-alpha-2.jar 1
unresolved:feign-core-8.18.0.jar 1
unresolved:feign-okhttp-8.18.0.jar 1
unresolved:hamcrest-core-1.3.jar 1
unresolved:jdom-1.1.2.jar 1
unresolved:junit-4.12.jar 1
unresolved:lombok-1.16.18.jar 1
unresolved:parboiled-core-1.1.7.jar 1
unresolved:parboiled-java-1.1.7.jar 1
unresolved:pegdown-1.6.0.jar 1
unresolved:xpp3-1.1.3.4-RC8.jar 1
unresolved:xstream-1.1.3.jar 1
@@ -0,0 +1,15 @@
# 从 multiset 差值中扣减「仅当前构建多出」的条目。
cn.cloudwalk.elevator:cw-elevator-application-common:2.0-SNAPSHOT 1
cn.cloudwalk.elevator:cw-elevator-application-data:2.0-SNAPSHOT 1
cn.cloudwalk.elevator:cw-elevator-application-service:2.0-SNAPSHOT 1
cn.cloudwalk.elevator:cw-elevator-application-web:2.0-SNAPSHOT 1
com.google.code.findbugs:jsr305:3.0.2 1
io.github.openfeign:feign-okhttp:9.5.0 1
javax.annotation:javax.annotation-api:1.3.2 1
net.bytebuddy:byte-buddy-dep:1.9.6 1
org.hibernate.validator:hibernate-validator:6.0.22.Final 1
org.jctools:jctools-core:2.1.1 1
unresolved:annotations-2.0.1.jar 1
unresolved:asm-7.3.1.jar 1
unresolved:asm-commons-7.0.jar 1
unresolved:lombok-1.16.22.jar 1
@@ -0,0 +1,869 @@
# cw-elevator-application V1 fat-jar 与 V2 fat-jar 依赖差异核对
**生成方式**:脚本 `scripts/generate_v1_v2_elevator_dependency_diff.py`(可重复执行覆盖本文件)。
## 样本路径
- **V1**`cw-elevator-application-V1.0.0.20211103/cw-elevator-application-V1.0.0.20211103.jar`
- **V2**`maven-cw-elevator-application/cw-elevator-application-starter/target/cw-elevator-application-2.0.0.jar`
| 指标 | V1 | V2 |
|------|----|----|
| 嵌套 jar 条目数(lib / BOOT-INF/lib | 269 | 242 |
| 解析出唯一坐标 `groupId:artifactId:version` 数 | 269 | 242 |
| 同名 GA、两侧均有解析且 version 集合不一致(§2.2.1)条数 | — | **4** |
| 与 Maven `dependency:list`runtime)条目数 | — | 242 |
---
## 1. Maven 方式(仅 V2 reactor
`maven-cw-elevator-application` 下执行:`mvn -pl cw-elevator-application-starter -am dependency:list -DincludeScope=runtime -Dsort=true -DoutputFile=target/v2-maven-deps.txt``-am` 时每个子模块写各自的 `target/`**§1.1 使用 starter 模块文件**`cw-elevator-application-starter/target/v2-maven-deps.txt`
**说明**:历史 **V1 运行包** 当前仓库无对应 **1.0** 聚合工程可一键 `dependency:list`V1 的 Maven 坐标视图见 **§2 二进制嵌套 JAR 的 pom.properties**。
### 1.1 V2 `dependency:list` 全量(runtime
| # | groupId | artifactId | version | scope |
|---|---------|--------------|---------|-------|
| 1 | `ch.qos.logback` | `logback-classic` | `1.1.11` | `compile` |
| 2 | `ch.qos.logback` | `logback-core` | `1.1.11` | `compile` |
| 3 | `cn.cloudwalk` | `cloudwalk-device-sdk-protocol-entity` | `2.2.0` | `compile` |
| 4 | `cn.cloudwalk` | `cwos-java-sdk-resource` | `1.0.0-SNAPSHOT` | `compile` |
| 5 | `cn.cloudwalk` | `cwos-portal-interface` | `1.0.0-SNAPSHOT` | `compile` |
| 6 | `cn.cloudwalk.cloud` | `cloudwalk-common-event` | `3.7.2-Brussels-SRX` | `compile` |
| 7 | `cn.cloudwalk.cloud` | `cloudwalk-common-result` | `3.7.2-Brussels-SRX` | `compile` |
| 8 | `cn.cloudwalk.cloud` | `cloudwalk-common-serial` | `3.7.2-Brussels-SRX` | `compile` |
| 9 | `cn.cloudwalk.cloud` | `cloudwalk-common-service` | `3.7.2-Brussels-SRX` | `compile` |
| 10 | `cn.cloudwalk.cloud` | `cloudwalk-common-web` | `3.7.2-Brussels-SRX` | `compile` |
| 11 | `cn.cloudwalk.cloud` | `cloudwalk-device-manager-common` | `2.0.2` | `compile` |
| 12 | `cn.cloudwalk.cloud` | `cloudwalk-device-manager-interface` | `2.0.2` | `compile` |
| 13 | `cn.cloudwalk.cloud` | `cwos-common-aks-interface` | `1.0.0-SNAPSHOT` | `compile` |
| 14 | `cn.cloudwalk.cloud` | `cwos-component-resource-data` | `1.0.0-SNAPSHOT` | `compile` |
| 15 | `cn.cloudwalk.cloud` | `cwos-component-resource-interface` | `1.0.0-SNAPSHOT` | `compile` |
| 16 | `cn.cloudwalk.cloud` | `cwos-device-authentication-interface` | `1.0.0-SNAPSHOT` | `compile` |
| 17 | `cn.cloudwalk.cloud` | `cwos-sdk-event` | `1.5.0-SNAPSHOT` | `compile` |
| 18 | `cn.cloudwalk.elevator` | `cw-elevator-application-common` | `2.0-SNAPSHOT` | `compile` |
| 19 | `cn.cloudwalk.elevator` | `cw-elevator-application-data` | `2.0-SNAPSHOT` | `compile` |
| 20 | `cn.cloudwalk.elevator` | `cw-elevator-application-service` | `2.0-SNAPSHOT` | `compile` |
| 21 | `cn.cloudwalk.elevator` | `cw-elevator-application-web` | `2.0-SNAPSHOT` | `compile` |
| 22 | `cn.cloudwalk.intelligent` | `cloudwalk-intelligent-component-lock` | `1.1.1-SNAPSHOT` | `compile` |
| 23 | `cn.cloudwalk.intelligent` | `davinci-manager-common` | `1.1.7-SNAPSHOT` | `compile` |
| 24 | `cn.cloudwalk.intelligent` | `davinci-manager-storage` | `1.1.7-SNAPSHOT` | `compile` |
| 25 | `cn.cloudwalk.intelligent` | `intelligent-cwoscomponent-interface` | `2.9.2-xinghewan` | `compile` |
| 26 | `cn.cloudwalk.intelligent` | `intelligent-cwoscomponent-rest` | `2.9.2-xinghewan` | `compile` |
| 27 | `com.alibaba` | `fastjson` | `1.2.73` | `compile` |
| 28 | `com.aliyun` | `aliyun-java-sdk-core` | `3.2.8` | `compile` |
| 29 | `com.aliyun` | `aliyun-java-sdk-dysmsapi` | `1.1.0` | `compile` |
| 30 | `com.ecwid.consul` | `consul-api` | `1.3.0` | `compile` |
| 31 | `com.fasterxml` | `classmate` | `1.3.4` | `compile` |
| 32 | `com.fasterxml.jackson.core` | `jackson-annotations` | `2.11.2` | `compile` |
| 33 | `com.fasterxml.jackson.core` | `jackson-core` | `2.11.2` | `compile` |
| 34 | `com.fasterxml.jackson.core` | `jackson-databind` | `2.11.2` | `compile` |
| 35 | `com.fasterxml.jackson.dataformat` | `jackson-dataformat-yaml` | `2.11.2` | `compile` |
| 36 | `com.fasterxml.jackson.datatype` | `jackson-datatype-jsr310` | `2.11.2` | `compile` |
| 37 | `com.fasterxml.jackson.module` | `jackson-module-afterburner` | `2.11.2` | `compile` |
| 38 | `com.github.jsqlparser` | `jsqlparser` | `1.2` | `compile` |
| 39 | `com.github.luben` | `zstd-jni` | `1.4.0-1` | `compile` |
| 40 | `com.github.pagehelper` | `pagehelper` | `5.1.2` | `compile` |
| 41 | `com.github.pagehelper` | `pagehelper-spring-boot-autoconfigure` | `1.2.5` | `compile` |
| 42 | `com.github.virtuald` | `curvesapi` | `1.04` | `compile` |
| 43 | `com.google.code.findbugs` | `annotations` | `2.0.1` | `compile` |
| 44 | `com.google.code.findbugs` | `jsr305` | `3.0.2` | `compile` |
| 45 | `com.google.code.gson` | `gson` | `2.8.5` | `compile` |
| 46 | `com.google.guava` | `guava` | `20.0` | `compile` |
| 47 | `com.google.zxing` | `core` | `3.3.3` | `compile` |
| 48 | `com.netflix.archaius` | `archaius-core` | `0.6.6` | `compile` |
| 49 | `com.netflix.hystrix` | `hystrix-core` | `1.5.12` | `compile` |
| 50 | `com.netflix.hystrix` | `hystrix-javanica` | `1.5.12` | `compile` |
| 51 | `com.netflix.hystrix` | `hystrix-metrics-event-stream` | `1.5.12` | `compile` |
| 52 | `com.netflix.hystrix` | `hystrix-serialization` | `1.5.12` | `runtime` |
| 53 | `com.netflix.netflix-commons` | `netflix-commons-util` | `0.1.1` | `runtime` |
| 54 | `com.netflix.netflix-commons` | `netflix-statistics` | `0.1.1` | `runtime` |
| 55 | `com.netflix.ribbon` | `ribbon` | `2.2.5` | `compile` |
| 56 | `com.netflix.ribbon` | `ribbon-core` | `2.2.5` | `compile` |
| 57 | `com.netflix.ribbon` | `ribbon-httpclient` | `2.2.5` | `compile` |
| 58 | `com.netflix.ribbon` | `ribbon-loadbalancer` | `2.2.5` | `compile` |
| 59 | `com.netflix.ribbon` | `ribbon-transport` | `2.2.5` | `runtime` |
| 60 | `com.netflix.servo` | `servo-core` | `0.10.1` | `runtime` |
| 61 | `com.netflix.servo` | `servo-internal` | `0.10.1` | `runtime` |
| 62 | `com.squareup.okhttp3` | `okhttp` | `3.2.0` | `compile` |
| 63 | `com.squareup.okio` | `okio` | `1.6.0` | `compile` |
| 64 | `com.sun.jersey` | `jersey-client` | `1.19.1` | `runtime` |
| 65 | `com.sun.jersey` | `jersey-core` | `1.19.1` | `runtime` |
| 66 | `com.sun.jersey.contribs` | `jersey-apache-client4` | `1.19.1` | `runtime` |
| 67 | `com.zaxxer` | `HikariCP` | `2.5.1` | `compile` |
| 68 | `commons-codec` | `commons-codec` | `1.10` | `compile` |
| 69 | `commons-collections` | `commons-collections` | `3.2.2` | `runtime` |
| 70 | `commons-configuration` | `commons-configuration` | `1.8` | `compile` |
| 71 | `commons-fileupload` | `commons-fileupload` | `1.3.1` | `compile` |
| 72 | `commons-io` | `commons-io` | `2.5` | `compile` |
| 73 | `commons-lang` | `commons-lang` | `2.6` | `compile` |
| 74 | `commons-logging` | `commons-logging` | `1.2` | `compile` |
| 75 | `de.ruedigermoeller` | `fst` | `2.56` | `compile` |
| 76 | `dom4j` | `dom4j` | `1.6.1` | `compile` |
| 77 | `io.github.openfeign` | `feign-core` | `9.5.0` | `compile` |
| 78 | `io.github.openfeign` | `feign-hystrix` | `9.5.0` | `compile` |
| 79 | `io.github.openfeign` | `feign-okhttp` | `9.5.0` | `compile` |
| 80 | `io.github.openfeign` | `feign-slf4j` | `9.5.0` | `compile` |
| 81 | `io.github.openfeign.form` | `feign-form` | `3.0.3` | `compile` |
| 82 | `io.github.openfeign.form` | `feign-form-spring` | `3.0.3` | `compile` |
| 83 | `io.netty` | `netty-buffer` | `4.1.33.Final` | `compile` |
| 84 | `io.netty` | `netty-codec` | `4.1.33.Final` | `compile` |
| 85 | `io.netty` | `netty-codec-dns` | `4.1.33.Final` | `compile` |
| 86 | `io.netty` | `netty-common` | `4.1.33.Final` | `compile` |
| 87 | `io.netty` | `netty-handler` | `4.1.33.Final` | `compile` |
| 88 | `io.netty` | `netty-resolver` | `4.1.33.Final` | `compile` |
| 89 | `io.netty` | `netty-resolver-dns` | `4.1.33.Final` | `compile` |
| 90 | `io.netty` | `netty-transport` | `4.1.33.Final` | `compile` |
| 91 | `io.projectreactor` | `reactor-core` | `2.0.8.RELEASE` | `compile` |
| 92 | `io.projectreactor` | `reactor-stream` | `2.0.8.RELEASE` | `compile` |
| 93 | `io.reactivex` | `rxjava` | `1.2.0` | `compile` |
| 94 | `io.reactivex` | `rxnetty` | `0.4.9` | `runtime` |
| 95 | `io.reactivex` | `rxnetty-contexts` | `0.4.9` | `runtime` |
| 96 | `io.reactivex` | `rxnetty-servo` | `0.4.9` | `runtime` |
| 97 | `io.reactivex.rxjava2` | `rxjava` | `2.1.13` | `compile` |
| 98 | `javax.activation` | `activation` | `1.1` | `compile` |
| 99 | `javax.annotation` | `javax.annotation-api` | `1.3.2` | `compile` |
| 100 | `javax.cache` | `cache-api` | `1.0.0` | `compile` |
| 101 | `javax.inject` | `javax.inject` | `1` | `runtime` |
| 102 | `javax.mail` | `mail` | `1.4.4` | `compile` |
| 103 | `javax.validation` | `validation-api` | `1.1.0.Final` | `compile` |
| 104 | `javax.ws.rs` | `jsr311-api` | `1.1.1` | `runtime` |
| 105 | `joda-time` | `joda-time` | `2.9.9` | `compile` |
| 106 | `mysql` | `mysql-connector-java` | `5.1.47` | `compile` |
| 107 | `net.bytebuddy` | `byte-buddy` | `1.9.6` | `compile` |
| 108 | `net.bytebuddy` | `byte-buddy-dep` | `1.9.6` | `compile` |
| 109 | `net.coobird` | `thumbnailator` | `0.4.8` | `compile` |
| 110 | `net.lingala.zip4j` | `zip4j` | `2.6.2` | `compile` |
| 111 | `net.sf.ehcache` | `ehcache` | `2.10.5` | `compile` |
| 112 | `net.sf.opencsv` | `opencsv` | `2.3` | `compile` |
| 113 | `org.antlr` | `antlr4-runtime` | `4.7.2` | `compile` |
| 114 | `org.apache.ant` | `ant` | `1.9.6` | `compile` |
| 115 | `org.apache.ant` | `ant-launcher` | `1.9.6` | `compile` |
| 116 | `org.apache.commons` | `commons-collections4` | `4.1` | `compile` |
| 117 | `org.apache.commons` | `commons-compress` | `1.9` | `compile` |
| 118 | `org.apache.commons` | `commons-lang3` | `3.5` | `compile` |
| 119 | `org.apache.commons` | `commons-pool2` | `2.4.3` | `compile` |
| 120 | `org.apache.httpcomponents` | `httpclient` | `4.5.6` | `compile` |
| 121 | `org.apache.httpcomponents` | `httpcore` | `4.4.10` | `compile` |
| 122 | `org.apache.kafka` | `kafka-clients` | `2.3.0` | `compile` |
| 123 | `org.apache.poi` | `poi` | `3.15` | `compile` |
| 124 | `org.apache.poi` | `poi-ooxml` | `3.15` | `compile` |
| 125 | `org.apache.poi` | `poi-ooxml-schemas` | `3.15` | `compile` |
| 126 | `org.apache.shardingsphere` | `encrypt-core-merge` | `4.0.0` | `compile` |
| 127 | `org.apache.shardingsphere` | `encrypt-core-rewrite` | `4.0.0` | `compile` |
| 128 | `org.apache.shardingsphere` | `sharding-core-api` | `4.0.0` | `compile` |
| 129 | `org.apache.shardingsphere` | `sharding-core-common` | `4.0.0` | `compile` |
| 130 | `org.apache.shardingsphere` | `sharding-core-entry` | `4.0.0` | `compile` |
| 131 | `org.apache.shardingsphere` | `sharding-core-execute` | `4.0.0` | `compile` |
| 132 | `org.apache.shardingsphere` | `sharding-core-merge` | `4.0.0` | `compile` |
| 133 | `org.apache.shardingsphere` | `sharding-core-rewrite` | `4.0.0` | `compile` |
| 134 | `org.apache.shardingsphere` | `sharding-core-route` | `4.0.0` | `compile` |
| 135 | `org.apache.shardingsphere` | `sharding-jdbc-core` | `4.0.0` | `compile` |
| 136 | `org.apache.shardingsphere` | `sharding-jdbc-spring-boot-starter` | `4.0.0` | `compile` |
| 137 | `org.apache.shardingsphere` | `sharding-spring-boot-util` | `4.0.0` | `compile` |
| 138 | `org.apache.shardingsphere` | `sharding-transaction-core` | `4.0.0` | `compile` |
| 139 | `org.apache.shardingsphere` | `shardingsphere-execute` | `4.0.0` | `compile` |
| 140 | `org.apache.shardingsphere` | `shardingsphere-merge` | `4.0.0` | `compile` |
| 141 | `org.apache.shardingsphere` | `shardingsphere-rewrite-engine` | `4.0.0` | `compile` |
| 142 | `org.apache.shardingsphere` | `shardingsphere-spi` | `4.0.0` | `compile` |
| 143 | `org.apache.shardingsphere` | `shardingsphere-sql-parser-engine` | `4.0.0` | `compile` |
| 144 | `org.apache.shardingsphere` | `shardingsphere-sql-parser-mysql` | `4.0.0` | `compile` |
| 145 | `org.apache.shardingsphere` | `shardingsphere-sql-parser-oracle` | `4.0.0` | `compile` |
| 146 | `org.apache.shardingsphere` | `shardingsphere-sql-parser-postgresql` | `4.0.0` | `compile` |
| 147 | `org.apache.shardingsphere` | `shardingsphere-sql-parser-relation` | `4.0.0` | `compile` |
| 148 | `org.apache.shardingsphere` | `shardingsphere-sql-parser-spi` | `4.0.0` | `compile` |
| 149 | `org.apache.shardingsphere` | `shardingsphere-sql-parser-sql92` | `4.0.0` | `compile` |
| 150 | `org.apache.shardingsphere` | `shardingsphere-sql-parser-sqlserver` | `4.0.0` | `compile` |
| 151 | `org.apache.tomcat` | `tomcat-annotations-api` | `8.5.34` | `compile` |
| 152 | `org.apache.tomcat` | `tomcat-jdbc` | `8.5.34` | `compile` |
| 153 | `org.apache.tomcat` | `tomcat-juli` | `8.5.34` | `compile` |
| 154 | `org.apache.tomcat.embed` | `tomcat-embed-core` | `8.5.34` | `compile` |
| 155 | `org.apache.tomcat.embed` | `tomcat-embed-el` | `8.5.34` | `compile` |
| 156 | `org.apache.tomcat.embed` | `tomcat-embed-websocket` | `8.5.34` | `compile` |
| 157 | `org.apache.xmlbeans` | `xmlbeans` | `2.6.0` | `compile` |
| 158 | `org.aspectj` | `aspectjweaver` | `1.8.13` | `compile` |
| 159 | `org.bouncycastle` | `bcpkix-jdk15on` | `1.55` | `compile` |
| 160 | `org.bouncycastle` | `bcprov-jdk15on` | `1.55` | `compile` |
| 161 | `org.codehaus.groovy` | `groovy` | `indy` | `2.4.5` |
| 162 | `org.freemarker` | `freemarker` | `2.3.28` | `compile` |
| 163 | `org.hdrhistogram` | `HdrHistogram` | `2.1.9` | `compile` |
| 164 | `org.hibernate` | `hibernate-validator` | `5.3.6.Final` | `compile` |
| 165 | `org.hibernate.validator` | `hibernate-validator` | `6.0.22.Final` | `compile` |
| 166 | `org.javassist` | `javassist` | `3.21.0-GA` | `compile` |
| 167 | `org.jboss.logging` | `jboss-logging` | `3.3.2.Final` | `compile` |
| 168 | `org.jctools` | `jctools-core` | `2.1.1` | `compile` |
| 169 | `org.jodd` | `jodd-bean` | `3.7.1` | `compile` |
| 170 | `org.jodd` | `jodd-core` | `3.7.1` | `compile` |
| 171 | `org.jsoup` | `jsoup` | `1.9.2` | `compile` |
| 172 | `org.jvnet` | `animal-sniffer-annotation` | `1.0` | `compile` |
| 173 | `org.lz4` | `lz4-java` | `1.6.0` | `compile` |
| 174 | `org.mybatis` | `mybatis` | `3.4.6` | `compile` |
| 175 | `org.mybatis` | `mybatis-spring` | `1.3.2` | `compile` |
| 176 | `org.mybatis.spring.boot` | `mybatis-spring-boot-autoconfigure` | `1.3.1` | `compile` |
| 177 | `org.mybatis.spring.boot` | `mybatis-spring-boot-starter` | `1.3.1` | `compile` |
| 178 | `org.objenesis` | `objenesis` | `2.1` | `compile` |
| 179 | `org.ow2.asm` | `asm` | `7.3.1` | `compile` |
| 180 | `org.ow2.asm` | `asm-commons` | `7.0` | `compile` |
| 181 | `org.projectlombok` | `lombok` | `1.16.22` | `compile` |
| 182 | `org.reactivestreams` | `reactive-streams` | `1.0.2` | `compile` |
| 183 | `org.redisson` | `redisson` | `2.15.2` | `compile` |
| 184 | `org.redisson` | `redisson-spring-boot-starter` | `2.15.2` | `compile` |
| 185 | `org.redisson` | `redisson-spring-data-18` | `2.15.2` | `compile` |
| 186 | `org.reflections` | `reflections` | `0.9.9-RC2` | `compile` |
| 187 | `org.slf4j` | `jcl-over-slf4j` | `1.7.25` | `compile` |
| 188 | `org.slf4j` | `jul-to-slf4j` | `1.7.25` | `compile` |
| 189 | `org.slf4j` | `log4j-over-slf4j` | `1.7.25` | `compile` |
| 190 | `org.slf4j` | `slf4j-api` | `1.7.25` | `compile` |
| 191 | `org.springframework` | `spring-aop` | `4.3.29.RELEASE` | `compile` |
| 192 | `org.springframework` | `spring-aspects` | `4.3.29.RELEASE` | `compile` |
| 193 | `org.springframework` | `spring-beans` | `4.3.29.RELEASE` | `compile` |
| 194 | `org.springframework` | `spring-context` | `4.3.29.RELEASE` | `compile` |
| 195 | `org.springframework` | `spring-context-support` | `4.3.29.RELEASE` | `compile` |
| 196 | `org.springframework` | `spring-core` | `4.3.29.RELEASE` | `compile` |
| 197 | `org.springframework` | `spring-expression` | `4.3.29.RELEASE` | `compile` |
| 198 | `org.springframework` | `spring-jdbc` | `4.3.29.RELEASE` | `compile` |
| 199 | `org.springframework` | `spring-oxm` | `4.3.29.RELEASE` | `compile` |
| 200 | `org.springframework` | `spring-tx` | `4.3.29.RELEASE` | `compile` |
| 201 | `org.springframework` | `spring-web` | `4.3.29.RELEASE` | `compile` |
| 202 | `org.springframework` | `spring-webmvc` | `4.3.29.RELEASE` | `compile` |
| 203 | `org.springframework.boot` | `spring-boot` | `1.5.17.RELEASE` | `compile` |
| 204 | `org.springframework.boot` | `spring-boot-actuator` | `1.5.17.RELEASE` | `compile` |
| 205 | `org.springframework.boot` | `spring-boot-autoconfigure` | `1.5.17.RELEASE` | `compile` |
| 206 | `org.springframework.boot` | `spring-boot-starter` | `1.5.17.RELEASE` | `compile` |
| 207 | `org.springframework.boot` | `spring-boot-starter-actuator` | `1.5.17.RELEASE` | `compile` |
| 208 | `org.springframework.boot` | `spring-boot-starter-aop` | `1.5.17.RELEASE` | `compile` |
| 209 | `org.springframework.boot` | `spring-boot-starter-cache` | `1.5.17.RELEASE` | `compile` |
| 210 | `org.springframework.boot` | `spring-boot-starter-data-redis` | `1.5.17.RELEASE` | `compile` |
| 211 | `org.springframework.boot` | `spring-boot-starter-freemarker` | `1.5.17.RELEASE` | `compile` |
| 212 | `org.springframework.boot` | `spring-boot-starter-jdbc` | `1.5.17.RELEASE` | `compile` |
| 213 | `org.springframework.boot` | `spring-boot-starter-logging` | `1.5.17.RELEASE` | `compile` |
| 214 | `org.springframework.boot` | `spring-boot-starter-tomcat` | `1.5.17.RELEASE` | `compile` |
| 215 | `org.springframework.boot` | `spring-boot-starter-web` | `1.5.17.RELEASE` | `compile` |
| 216 | `org.springframework.cloud` | `spring-cloud-commons` | `1.3.5.RELEASE` | `compile` |
| 217 | `org.springframework.cloud` | `spring-cloud-consul-core` | `1.3.5.RELEASE` | `compile` |
| 218 | `org.springframework.cloud` | `spring-cloud-consul-discovery` | `1.3.5.RELEASE` | `compile` |
| 219 | `org.springframework.cloud` | `spring-cloud-context` | `1.3.5.RELEASE` | `compile` |
| 220 | `org.springframework.cloud` | `spring-cloud-netflix-core` | `1.4.6.RELEASE` | `compile` |
| 221 | `org.springframework.cloud` | `spring-cloud-netflix-hystrix-dashboard` | `1.4.6.RELEASE` | `compile` |
| 222 | `org.springframework.cloud` | `spring-cloud-starter` | `1.3.5.RELEASE` | `compile` |
| 223 | `org.springframework.cloud` | `spring-cloud-starter-consul` | `1.3.5.RELEASE` | `compile` |
| 224 | `org.springframework.cloud` | `spring-cloud-starter-consul-discovery` | `1.3.5.RELEASE` | `compile` |
| 225 | `org.springframework.cloud` | `spring-cloud-starter-netflix-archaius` | `1.4.6.RELEASE` | `compile` |
| 226 | `org.springframework.cloud` | `spring-cloud-starter-netflix-hystrix` | `1.4.6.RELEASE` | `compile` |
| 227 | `org.springframework.cloud` | `spring-cloud-starter-netflix-hystrix-dashboard` | `1.4.6.RELEASE` | `compile` |
| 228 | `org.springframework.cloud` | `spring-cloud-starter-netflix-ribbon` | `1.4.6.RELEASE` | `compile` |
| 229 | `org.springframework.cloud` | `spring-cloud-starter-openfeign` | `1.4.6.RELEASE` | `compile` |
| 230 | `org.springframework.cloud` | `spring-cloud-starter-ribbon` | `1.4.6.RELEASE` | `compile` |
| 231 | `org.springframework.data` | `spring-data-commons` | `1.13.16.RELEASE` | `compile` |
| 232 | `org.springframework.data` | `spring-data-keyvalue` | `1.2.16.RELEASE` | `compile` |
| 233 | `org.springframework.data` | `spring-data-redis` | `1.8.16.RELEASE` | `compile` |
| 234 | `org.springframework.security` | `spring-security-crypto` | `4.2.9.RELEASE` | `compile` |
| 235 | `org.springframework.security` | `spring-security-rsa` | `1.0.3.RELEASE` | `compile` |
| 236 | `org.webjars` | `d3js` | `3.4.11` | `compile` |
| 237 | `org.webjars` | `jquery` | `2.1.1` | `compile` |
| 238 | `org.xerial.snappy` | `snappy-java` | `1.1.7.3` | `compile` |
| 239 | `org.yaml` | `snakeyaml` | `1.17` | `compile` |
| 240 | `redis.clients` | `jedis` | `2.9.0` | `compile` |
| 241 | `stax` | `stax-api` | `1.0.1` | `compile` |
| 242 | `xml-apis` | `xml-apis` | `1.4.01` | `compile` |
---
## 2. 二进制方式(嵌套 JAR + pom.properties
- **V1**`lib/*.jar`
- **V2**:自动检测为 `lib/*.jar`(与 spring-boot-maven-plugin 1.3.x + Boot 1.5 一致时为 `lib/`)。
对每个嵌套 jar 读取 `META-INF/maven/**/pom.properties` 得到 `groupId:artifactId:version`;无法读取时记为 `?:?:?`(多为无 Maven 元数据的第三方包)。
### 2.1 仅在 V1 出现的坐标(相对 V2 二进制集合)
**共 41 项**
| groupId:artifactId:version | V1 嵌套路径 |
|------------------------------|-------------|
| `cn.cloudwalk.elevator:cw-elevator-application-common:1.0-SNAPSHOT` | `lib/cw-elevator-application-common-1.0-SNAPSHOT.jar` |
| `cn.cloudwalk.elevator:cw-elevator-application-data:1.0-SNAPSHOT` | `lib/cw-elevator-application-data-1.0-SNAPSHOT.jar` |
| `cn.cloudwalk.elevator:cw-elevator-application-service:1.0-SNAPSHOT` | `lib/cw-elevator-application-service-1.0-SNAPSHOT.jar` |
| `cn.cloudwalk.elevator:cw-elevator-application-web:1.0-SNAPSHOT` | `lib/cw-elevator-application-web-1.0-SNAPSHOT.jar` |
| `org.apache.maven.wagon:wagon-provider-api:1.0-beta-2` | `lib/wagon-provider-api-1.0-beta-2.jar` |
| `org.apache.maven:maven-artifact-manager:2.0.5` | `lib/maven-artifact-manager-2.0.5.jar` |
| `org.apache.maven:maven-artifact:2.0.5` | `lib/maven-artifact-2.0.5.jar` |
| `org.apache.maven:maven-model:2.0.5` | `lib/maven-model-2.0.5.jar` |
| `org.apache.maven:maven-plugin-api:2.0.5` | `lib/maven-plugin-api-2.0.5.jar` |
| `org.apache.maven:maven-profile:2.0.5` | `lib/maven-profile-2.0.5.jar` |
| `org.apache.maven:maven-project:2.0.5` | `lib/maven-project-2.0.5.jar` |
| `org.apache.maven:maven-repository-metadata:2.0.5` | `lib/maven-repository-metadata-2.0.5.jar` |
| `org.apache.maven:maven-settings:2.0.5` | `lib/maven-settings-2.0.5.jar` |
| `org.codehaus.plexus:plexus-container-default:1.0-alpha-9` | `lib/plexus-container-default-1.0-alpha-9.jar` |
| `org.codehaus.plexus:plexus-utils:1.1` | `lib/plexus-utils-1.1.jar` |
| `org.jfrog.jade.plugins.common:jade-plugin-common:1.3.8` | `lib/jade-plugin-common-1.3.8.jar` |
| `org.jfrog.maven.annomojo:maven-plugin-anno:1.4.1` | `lib/maven-plugin-anno-1.4.1.jar` |
| `org.reflections:reflections-maven:0.9.9-RC2` | `lib/reflections-maven-0.9.9-RC2.jar` |
| `org.springside:springside-core:4.2.3-GA` | `lib/springside-core-4.2.3-GA.jar` |
| `unresolved:annotations-2.0.0.jar` | `lib/annotations-2.0.0.jar` |
| `unresolved:ant-1.6.5.jar` | `lib/ant-1.6.5.jar` |
| `unresolved:ant-apache-bsf-1.9.4.jar` | `lib/ant-apache-bsf-1.9.4.jar` |
| `unresolved:ant-jakarta-oro-1.6.1.jar` | `lib/ant-jakarta-oro-1.6.1.jar` |
| `unresolved:ant-nodeps-1.8.1.jar` | `lib/ant-nodeps-1.8.1.jar` |
| `unresolved:asm-5.0.3.jar` | `lib/asm-5.0.3.jar` |
| `unresolved:asm-analysis-5.0.3.jar` | `lib/asm-analysis-5.0.3.jar` |
| `unresolved:asm-tree-5.0.3.jar` | `lib/asm-tree-5.0.3.jar` |
| `unresolved:asm-util-5.0.3.jar` | `lib/asm-util-5.0.3.jar` |
| `unresolved:bsf-2.4.0.jar` | `lib/bsf-2.4.0.jar` |
| `unresolved:classworlds-1.1-alpha-2.jar` | `lib/classworlds-1.1-alpha-2.jar` |
| `unresolved:feign-core-8.18.0.jar` | `lib/feign-core-8.18.0.jar` |
| `unresolved:feign-okhttp-8.18.0.jar` | `lib/feign-okhttp-8.18.0.jar` |
| `unresolved:hamcrest-core-1.3.jar` | `lib/hamcrest-core-1.3.jar` |
| `unresolved:jdom-1.1.2.jar` | `lib/jdom-1.1.2.jar` |
| `unresolved:junit-4.12.jar` | `lib/junit-4.12.jar` |
| `unresolved:lombok-1.16.18.jar` | `lib/lombok-1.16.18.jar` |
| `unresolved:parboiled-core-1.1.7.jar` | `lib/parboiled-core-1.1.7.jar` |
| `unresolved:parboiled-java-1.1.7.jar` | `lib/parboiled-java-1.1.7.jar` |
| `unresolved:pegdown-1.6.0.jar` | `lib/pegdown-1.6.0.jar` |
| `unresolved:xpp3-1.1.3.4-RC8.jar` | `lib/xpp3-1.1.3.4-RC8.jar` |
| `unresolved:xstream-1.1.3.jar` | `lib/xstream-1.1.3.jar` |
### 2.2 仅在 V2 出现的坐标(相对 V1 二进制集合)
**共 14 项**
| groupId:artifactId:version | V2 嵌套路径 |
|------------------------------|-------------|
| `cn.cloudwalk.elevator:cw-elevator-application-common:2.0-SNAPSHOT` | `lib/cw-elevator-application-common-2.0-SNAPSHOT.jar` |
| `cn.cloudwalk.elevator:cw-elevator-application-data:2.0-SNAPSHOT` | `lib/cw-elevator-application-data-2.0-SNAPSHOT.jar` |
| `cn.cloudwalk.elevator:cw-elevator-application-service:2.0-SNAPSHOT` | `lib/cw-elevator-application-service-2.0-SNAPSHOT.jar` |
| `cn.cloudwalk.elevator:cw-elevator-application-web:2.0-SNAPSHOT` | `lib/cw-elevator-application-web-2.0-SNAPSHOT.jar` |
| `com.google.code.findbugs:jsr305:3.0.2` | `lib/jsr305-3.0.2.jar` |
| `io.github.openfeign:feign-okhttp:9.5.0` | `lib/feign-okhttp-9.5.0.jar` |
| `javax.annotation:javax.annotation-api:1.3.2` | `lib/javax.annotation-api-1.3.2.jar` |
| `net.bytebuddy:byte-buddy-dep:1.9.6` | `lib/byte-buddy-dep-1.9.6.jar` |
| `org.hibernate.validator:hibernate-validator:6.0.22.Final` | `lib/hibernate-validator-6.0.22.Final.jar` |
| `org.jctools:jctools-core:2.1.1` | `lib/jctools-core-2.1.1.jar` |
| `unresolved:annotations-2.0.1.jar` | `lib/annotations-2.0.1.jar` |
| `unresolved:asm-7.3.1.jar` | `lib/asm-7.3.1.jar` |
| `unresolved:asm-commons-7.0.jar` | `lib/asm-commons-7.0.jar` |
| `unresolved:lombok-1.16.22.jar` | `lib/lombok-1.16.22.jar` |
### 2.2.1 同名构件(groupId:artifactId)在 V1 与 V2 中的版本集合差异
由嵌套 jar 的 `pom.properties` 聚合:若同一 **GA** 在 V1、V2 中均能解析出版本,且 **version 集合不同**,则单独列出(与 §2.1 / §2.2 中分列的 `g:a:v` 键互为补充)。**不含**仅一侧出现的 GA。
**共 4 项**
| groupId:artifactId | V1 version(s) | V2 version(s) |
|--------------------|---------------|---------------|
| `cn.cloudwalk.elevator:cw-elevator-application-common` | `1.0-SNAPSHOT` | `2.0-SNAPSHOT` |
| `cn.cloudwalk.elevator:cw-elevator-application-data` | `1.0-SNAPSHOT` | `2.0-SNAPSHOT` |
| `cn.cloudwalk.elevator:cw-elevator-application-service` | `1.0-SNAPSHOT` | `2.0-SNAPSHOT` |
| `cn.cloudwalk.elevator:cw-elevator-application-web` | `1.0-SNAPSHOT` | `2.0-SNAPSHOT` |
### 2.3 两边均存在且坐标一致的依赖
**共 228 项**(名称版本完全一致)。
<details>
<summary>展开长表</summary>
| groupId:artifactId:version |
|------------------------------|
| `ch.qos.logback:logback-classic:1.1.11` |
| `ch.qos.logback:logback-core:1.1.11` |
| `cn.cloudwalk.cloud:cloudwalk-common-event:3.7.2-Brussels-SRX` |
| `cn.cloudwalk.cloud:cloudwalk-common-result:3.7.2-Brussels-SRX` |
| `cn.cloudwalk.cloud:cloudwalk-common-serial:3.7.2-Brussels-SRX` |
| `cn.cloudwalk.cloud:cloudwalk-common-service:3.7.2-Brussels-SRX` |
| `cn.cloudwalk.cloud:cloudwalk-common-web:3.7.2-Brussels-SRX` |
| `cn.cloudwalk.cloud:cloudwalk-device-manager-common:2.0.2` |
| `cn.cloudwalk.cloud:cloudwalk-device-manager-interface:2.0.2` |
| `cn.cloudwalk.cloud:cwos-common-aks-interface:1.0.0-SNAPSHOT` |
| `cn.cloudwalk.cloud:cwos-component-resource-data:1.0.0-SNAPSHOT` |
| `cn.cloudwalk.cloud:cwos-component-resource-interface:1.0.0-SNAPSHOT` |
| `cn.cloudwalk.cloud:cwos-device-authentication-interface:1.0.0-SNAPSHOT` |
| `cn.cloudwalk.cloud:cwos-sdk-event:1.5.0-SNAPSHOT` |
| `cn.cloudwalk.intelligent:cloudwalk-intelligent-component-lock:1.1.1-SNAPSHOT` |
| `cn.cloudwalk.intelligent:davinci-manager-common:1.1.7-SNAPSHOT` |
| `cn.cloudwalk.intelligent:davinci-manager-storage:1.1.7-SNAPSHOT` |
| `cn.cloudwalk.intelligent:intelligent-cwoscomponent-interface:2.9.2-xinghewan` |
| `cn.cloudwalk.intelligent:intelligent-cwoscomponent-rest:2.9.2-xinghewan` |
| `cn.cloudwalk:cloudwalk-device-sdk-protocol-entity:2.2.0` |
| `cn.cloudwalk:cwos-java-sdk-resource:1.0.0-SNAPSHOT` |
| `cn.cloudwalk:cwos-portal-interface:1.0.0-SNAPSHOT` |
| `com.alibaba:fastjson:1.2.73` |
| `com.aliyun:aliyun-java-sdk-core:3.2.8` |
| `com.aliyun:aliyun-java-sdk-dysmsapi:1.1.0` |
| `com.fasterxml.jackson.core:jackson-annotations:2.11.2` |
| `com.fasterxml.jackson.core:jackson-core:2.11.2` |
| `com.fasterxml.jackson.core:jackson-databind:2.11.2` |
| `com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.11.2` |
| `com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.11.2` |
| `com.fasterxml.jackson.module:jackson-module-afterburner:2.11.2` |
| `com.fasterxml:classmate:1.3.4` |
| `com.github.jsqlparser:jsqlparser:1.2` |
| `com.github.pagehelper:pagehelper-spring-boot-autoconfigure:1.2.5` |
| `com.github.pagehelper:pagehelper:5.1.2` |
| `com.github.virtuald:curvesapi:1.04` |
| `com.google.code.gson:gson:2.8.5` |
| `com.google.guava:guava:20.0` |
| `com.google.zxing:core:3.3.3` |
| `com.squareup.okhttp3:okhttp:3.2.0` |
| `com.squareup.okio:okio:1.6.0` |
| `com.sun.jersey.contribs:jersey-apache-client4:1.19.1` |
| `com.sun.jersey:jersey-client:1.19.1` |
| `com.sun.jersey:jersey-core:1.19.1` |
| `com.zaxxer:HikariCP:2.5.1` |
| `commons-codec:commons-codec:1.10` |
| `commons-collections:commons-collections:3.2.2` |
| `commons-configuration:commons-configuration:1.8` |
| `commons-fileupload:commons-fileupload:1.3.1` |
| `commons-io:commons-io:2.5` |
| `commons-lang:commons-lang:2.6` |
| `commons-logging:commons-logging:1.2` |
| `de.ruedigermoeller:fst:2.56` |
| `io.github.openfeign.form:feign-form-spring:3.0.3` |
| `io.github.openfeign.form:feign-form:3.0.3` |
| `io.github.openfeign:feign-core:9.5.0` |
| `io.github.openfeign:feign-hystrix:9.5.0` |
| `io.github.openfeign:feign-slf4j:9.5.0` |
| `io.netty:netty-buffer:4.1.33.Final` |
| `io.netty:netty-codec-dns:4.1.33.Final` |
| `io.netty:netty-codec:4.1.33.Final` |
| `io.netty:netty-common:4.1.33.Final` |
| `io.netty:netty-handler:4.1.33.Final` |
| `io.netty:netty-resolver-dns:4.1.33.Final` |
| `io.netty:netty-resolver:4.1.33.Final` |
| `io.netty:netty-transport:4.1.33.Final` |
| `javax.cache:cache-api:1.0.0` |
| `javax.mail:mail:1.4.4` |
| `javax.validation:validation-api:1.1.0.Final` |
| `javax.ws.rs:jsr311-api:1.1.1` |
| `joda-time:joda-time:2.9.9` |
| `net.bytebuddy:byte-buddy:1.9.6` |
| `net.coobird:thumbnailator:0.4.8` |
| `net.lingala.zip4j:zip4j:2.6.2` |
| `net.sf.ehcache:ehcache:2.10.5` |
| `net.sf.opencsv:opencsv:2.3` |
| `org.antlr:antlr4-runtime:4.7.2` |
| `org.apache.commons:commons-collections4:4.1` |
| `org.apache.commons:commons-compress:1.9` |
| `org.apache.commons:commons-lang3:3.5` |
| `org.apache.commons:commons-pool2:2.4.3` |
| `org.apache.httpcomponents:httpclient:4.5.6` |
| `org.apache.httpcomponents:httpcore:4.4.10` |
| `org.apache.shardingsphere:encrypt-core-merge:4.0.0` |
| `org.apache.shardingsphere:encrypt-core-rewrite:4.0.0` |
| `org.apache.shardingsphere:sharding-core-api:4.0.0` |
| `org.apache.shardingsphere:sharding-core-common:4.0.0` |
| `org.apache.shardingsphere:sharding-core-entry:4.0.0` |
| `org.apache.shardingsphere:sharding-core-execute:4.0.0` |
| `org.apache.shardingsphere:sharding-core-merge:4.0.0` |
| `org.apache.shardingsphere:sharding-core-rewrite:4.0.0` |
| `org.apache.shardingsphere:sharding-core-route:4.0.0` |
| `org.apache.shardingsphere:sharding-jdbc-core:4.0.0` |
| `org.apache.shardingsphere:sharding-jdbc-spring-boot-starter:4.0.0` |
| `org.apache.shardingsphere:sharding-spring-boot-util:4.0.0` |
| `org.apache.shardingsphere:sharding-transaction-core:4.0.0` |
| `org.apache.shardingsphere:shardingsphere-execute:4.0.0` |
| `org.apache.shardingsphere:shardingsphere-merge:4.0.0` |
| `org.apache.shardingsphere:shardingsphere-rewrite-engine:4.0.0` |
| `org.apache.shardingsphere:shardingsphere-spi:4.0.0` |
| `org.apache.shardingsphere:shardingsphere-sql-parser-engine:4.0.0` |
| `org.apache.shardingsphere:shardingsphere-sql-parser-mysql:4.0.0` |
| `org.apache.shardingsphere:shardingsphere-sql-parser-oracle:4.0.0` |
| `org.apache.shardingsphere:shardingsphere-sql-parser-postgresql:4.0.0` |
| `org.apache.shardingsphere:shardingsphere-sql-parser-relation:4.0.0` |
| `org.apache.shardingsphere:shardingsphere-sql-parser-spi:4.0.0` |
| `org.apache.shardingsphere:shardingsphere-sql-parser-sql92:4.0.0` |
| `org.apache.shardingsphere:shardingsphere-sql-parser-sqlserver:4.0.0` |
| `org.hdrhistogram:HdrHistogram:2.1.9` |
| `org.hibernate:hibernate-validator:5.3.6.Final` |
| `org.javassist:javassist:3.21.0-GA` |
| `org.jboss.logging:jboss-logging:3.3.2.Final` |
| `org.jsoup:jsoup:1.9.2` |
| `org.jvnet:animal-sniffer-annotation:1.0` |
| `org.mybatis.spring.boot:mybatis-spring-boot-autoconfigure:1.3.1` |
| `org.mybatis.spring.boot:mybatis-spring-boot-starter:1.3.1` |
| `org.mybatis:mybatis-spring:1.3.2` |
| `org.mybatis:mybatis:3.4.6` |
| `org.redisson:redisson-spring-boot-starter:2.15.2` |
| `org.redisson:redisson-spring-data-18:2.15.2` |
| `org.redisson:redisson:2.15.2` |
| `org.reflections:reflections:0.9.9-RC2` |
| `org.slf4j:jcl-over-slf4j:1.7.25` |
| `org.slf4j:jul-to-slf4j:1.7.25` |
| `org.slf4j:log4j-over-slf4j:1.7.25` |
| `org.slf4j:slf4j-api:1.7.25` |
| `org.springframework.boot:spring-boot-actuator:1.5.17.RELEASE` |
| `org.springframework.boot:spring-boot-autoconfigure:1.5.17.RELEASE` |
| `org.springframework.boot:spring-boot-starter-actuator:1.5.17.RELEASE` |
| `org.springframework.boot:spring-boot-starter-aop:1.5.17.RELEASE` |
| `org.springframework.boot:spring-boot-starter-cache:1.5.17.RELEASE` |
| `org.springframework.boot:spring-boot-starter-data-redis:1.5.17.RELEASE` |
| `org.springframework.boot:spring-boot-starter-freemarker:1.5.17.RELEASE` |
| `org.springframework.boot:spring-boot-starter-jdbc:1.5.17.RELEASE` |
| `org.springframework.boot:spring-boot-starter-logging:1.5.17.RELEASE` |
| `org.springframework.boot:spring-boot-starter-tomcat:1.5.17.RELEASE` |
| `org.springframework.boot:spring-boot-starter-web:1.5.17.RELEASE` |
| `org.springframework.boot:spring-boot-starter:1.5.17.RELEASE` |
| `org.springframework.boot:spring-boot:1.5.17.RELEASE` |
| `org.springframework.cloud:spring-cloud-commons:1.3.5.RELEASE` |
| `org.springframework.cloud:spring-cloud-consul-core:1.3.5.RELEASE` |
| `org.springframework.cloud:spring-cloud-consul-discovery:1.3.5.RELEASE` |
| `org.springframework.cloud:spring-cloud-context:1.3.5.RELEASE` |
| `org.springframework.cloud:spring-cloud-netflix-core:1.4.6.RELEASE` |
| `org.springframework.cloud:spring-cloud-netflix-hystrix-dashboard:1.4.6.RELEASE` |
| `org.springframework.cloud:spring-cloud-starter-consul-discovery:1.3.5.RELEASE` |
| `org.springframework.cloud:spring-cloud-starter-consul:1.3.5.RELEASE` |
| `org.springframework.cloud:spring-cloud-starter-netflix-archaius:1.4.6.RELEASE` |
| `org.springframework.cloud:spring-cloud-starter-netflix-hystrix-dashboard:1.4.6.RELEASE` |
| `org.springframework.cloud:spring-cloud-starter-netflix-hystrix:1.4.6.RELEASE` |
| `org.springframework.cloud:spring-cloud-starter-netflix-ribbon:1.4.6.RELEASE` |
| `org.springframework.cloud:spring-cloud-starter-openfeign:1.4.6.RELEASE` |
| `org.springframework.cloud:spring-cloud-starter-ribbon:1.4.6.RELEASE` |
| `org.springframework.cloud:spring-cloud-starter:1.3.5.RELEASE` |
| `org.springframework.data:spring-data-commons:1.13.16.RELEASE` |
| `org.springframework.data:spring-data-keyvalue:1.2.16.RELEASE` |
| `org.springframework.data:spring-data-redis:1.8.16.RELEASE` |
| `org.springframework.security:spring-security-rsa:1.0.3.BUILD-SNAPSHOT` |
| `org.webjars:d3js:3.4.11` |
| `org.webjars:jquery:2.1.1` |
| `org.yaml:snakeyaml:1.17` |
| `redis.clients:jedis:2.9.0` |
| `unresolved:activation-1.1.jar` |
| `unresolved:ant-1.9.6.jar` |
| `unresolved:ant-launcher-1.9.6.jar` |
| `unresolved:archaius-core-0.6.6.jar` |
| `unresolved:aspectjweaver-1.8.13.jar` |
| `unresolved:bcpkix-jdk15on-1.55.jar` |
| `unresolved:bcprov-jdk15on-1.55.jar` |
| `unresolved:consul-api-1.3.0.jar` |
| `unresolved:dom4j-1.6.1.jar` |
| `unresolved:freemarker-2.3.28.jar` |
| `unresolved:groovy-2.4.5-indy.jar` |
| `unresolved:hystrix-core-1.5.12.jar` |
| `unresolved:hystrix-javanica-1.5.12.jar` |
| `unresolved:hystrix-metrics-event-stream-1.5.12.jar` |
| `unresolved:hystrix-serialization-1.5.12.jar` |
| `unresolved:javax.inject-1.jar` |
| `unresolved:jodd-bean-3.7.1.jar` |
| `unresolved:jodd-core-3.7.1.jar` |
| `unresolved:kafka-clients-2.3.0.jar` |
| `unresolved:lz4-java-1.6.0.jar` |
| `unresolved:mysql-connector-java-5.1.47.jar` |
| `unresolved:netflix-commons-util-0.1.1.jar` |
| `unresolved:netflix-statistics-0.1.1.jar` |
| `unresolved:objenesis-2.1.jar` |
| `unresolved:poi-3.15.jar` |
| `unresolved:poi-ooxml-3.15.jar` |
| `unresolved:poi-ooxml-schemas-3.15.jar` |
| `unresolved:reactive-streams-1.0.2.jar` |
| `unresolved:reactor-core-2.0.8.RELEASE.jar` |
| `unresolved:reactor-stream-2.0.8.RELEASE.jar` |
| `unresolved:ribbon-2.2.5.jar` |
| `unresolved:ribbon-core-2.2.5.jar` |
| `unresolved:ribbon-httpclient-2.2.5.jar` |
| `unresolved:ribbon-loadbalancer-2.2.5.jar` |
| `unresolved:ribbon-transport-2.2.5.jar` |
| `unresolved:rxjava-1.2.0.jar` |
| `unresolved:rxjava-2.1.13.jar` |
| `unresolved:rxnetty-0.4.9.jar` |
| `unresolved:rxnetty-contexts-0.4.9.jar` |
| `unresolved:rxnetty-servo-0.4.9.jar` |
| `unresolved:servo-core-0.10.1.jar` |
| `unresolved:servo-internal-0.10.1.jar` |
| `unresolved:snappy-java-1.1.7.3.jar` |
| `unresolved:spring-aop-4.3.29.RELEASE.jar` |
| `unresolved:spring-aspects-4.3.29.RELEASE.jar` |
| `unresolved:spring-beans-4.3.29.RELEASE.jar` |
| `unresolved:spring-context-4.3.29.RELEASE.jar` |
| `unresolved:spring-context-support-4.3.29.RELEASE.jar` |
| `unresolved:spring-core-4.3.29.RELEASE.jar` |
| `unresolved:spring-expression-4.3.29.RELEASE.jar` |
| `unresolved:spring-jdbc-4.3.29.RELEASE.jar` |
| `unresolved:spring-oxm-4.3.29.RELEASE.jar` |
| `unresolved:spring-security-crypto-4.2.9.RELEASE.jar` |
| `unresolved:spring-tx-4.3.29.RELEASE.jar` |
| `unresolved:spring-web-4.3.29.RELEASE.jar` |
| `unresolved:spring-webmvc-4.3.29.RELEASE.jar` |
| `unresolved:stax-api-1.0.1.jar` |
| `unresolved:tomcat-annotations-api-8.5.34.jar` |
| `unresolved:tomcat-embed-core-8.5.34.jar` |
| `unresolved:tomcat-embed-el-8.5.34.jar` |
| `unresolved:tomcat-embed-websocket-8.5.34.jar` |
| `unresolved:tomcat-jdbc-8.5.34.jar` |
| `unresolved:tomcat-juli-8.5.34.jar` |
| `unresolved:xml-apis-1.4.01.jar` |
| `unresolved:xmlbeans-2.6.0.jar` |
| `unresolved:zstd-jni-1.4.0-1.jar` |
</details>
### 2.4 V2 二进制坐标 vs Maven dependency:list
- **版本字符串不一致**:例如 reactor 在 `dependency:list` 中为 **`2.0-SNAPSHOT`**,而 fat-jar 内嵌模块 **`cw-elevator-application-*-2.0.6.jar`** 的 `pom.properties`**`2.0.6`**,字符串比对会视为「仅一侧存在」,属**同名构件不同表述**,非缺失依赖。
- **在 dependency:list 中但不在嵌套 jar 元数据中的**:多为 **仅存在于解析树、与本模块 jar 文件命名不一致**,需对照 §1 表格。
- **未解析 `unresolved:*`**:见 §3,此类条目不参与坐标相等判断。
- **仅在 Maven listruntime**71 项
|坐标|
|----|
| `com.ecwid.consul:consul-api:1.3.0` |
| `com.github.luben:zstd-jni:1.4.0-1` |
| `com.google.code.findbugs:annotations:2.0.1` |
| `com.netflix.archaius:archaius-core:0.6.6` |
| `com.netflix.hystrix:hystrix-core:1.5.12` |
| `com.netflix.hystrix:hystrix-javanica:1.5.12` |
| `com.netflix.hystrix:hystrix-metrics-event-stream:1.5.12` |
| `com.netflix.hystrix:hystrix-serialization:1.5.12` |
| `com.netflix.netflix-commons:netflix-commons-util:0.1.1` |
| `com.netflix.netflix-commons:netflix-statistics:0.1.1` |
| `com.netflix.ribbon:ribbon-core:2.2.5` |
| `com.netflix.ribbon:ribbon-httpclient:2.2.5` |
| `com.netflix.ribbon:ribbon-loadbalancer:2.2.5` |
| `com.netflix.ribbon:ribbon-transport:2.2.5` |
| `com.netflix.ribbon:ribbon:2.2.5` |
| `com.netflix.servo:servo-core:0.10.1` |
| `com.netflix.servo:servo-internal:0.10.1` |
| `dom4j:dom4j:1.6.1` |
| `io.projectreactor:reactor-core:2.0.8.RELEASE` |
| `io.projectreactor:reactor-stream:2.0.8.RELEASE` |
| `io.reactivex.rxjava2:rxjava:2.1.13` |
| `io.reactivex:rxjava:1.2.0` |
| `io.reactivex:rxnetty-contexts:0.4.9` |
| `io.reactivex:rxnetty-servo:0.4.9` |
| `io.reactivex:rxnetty:0.4.9` |
| `javax.activation:activation:1.1` |
| `javax.inject:javax.inject:1` |
| `mysql:mysql-connector-java:5.1.47` |
| `org.apache.ant:ant-launcher:1.9.6` |
| `org.apache.ant:ant:1.9.6` |
| `org.apache.kafka:kafka-clients:2.3.0` |
| `org.apache.poi:poi-ooxml-schemas:3.15` |
| `org.apache.poi:poi-ooxml:3.15` |
| `org.apache.poi:poi:3.15` |
| `org.apache.tomcat.embed:tomcat-embed-core:8.5.34` |
| `org.apache.tomcat.embed:tomcat-embed-el:8.5.34` |
| `org.apache.tomcat.embed:tomcat-embed-websocket:8.5.34` |
| `org.apache.tomcat:tomcat-annotations-api:8.5.34` |
| `org.apache.tomcat:tomcat-jdbc:8.5.34` |
| `org.apache.tomcat:tomcat-juli:8.5.34` |
| `org.apache.xmlbeans:xmlbeans:2.6.0` |
| `org.aspectj:aspectjweaver:1.8.13` |
| `org.bouncycastle:bcpkix-jdk15on:1.55` |
| `org.bouncycastle:bcprov-jdk15on:1.55` |
| `org.codehaus.groovy:groovy:indy` |
| `org.freemarker:freemarker:2.3.28` |
| `org.jodd:jodd-bean:3.7.1` |
| `org.jodd:jodd-core:3.7.1` |
| `org.lz4:lz4-java:1.6.0` |
| `org.objenesis:objenesis:2.1` |
| `org.ow2.asm:asm-commons:7.0` |
| `org.ow2.asm:asm:7.3.1` |
| `org.projectlombok:lombok:1.16.22` |
| `org.reactivestreams:reactive-streams:1.0.2` |
| `org.springframework.security:spring-security-crypto:4.2.9.RELEASE` |
| `org.springframework.security:spring-security-rsa:1.0.3.RELEASE` |
| `org.springframework:spring-aop:4.3.29.RELEASE` |
| `org.springframework:spring-aspects:4.3.29.RELEASE` |
| `org.springframework:spring-beans:4.3.29.RELEASE` |
| `org.springframework:spring-context-support:4.3.29.RELEASE` |
| `org.springframework:spring-context:4.3.29.RELEASE` |
| `org.springframework:spring-core:4.3.29.RELEASE` |
| `org.springframework:spring-expression:4.3.29.RELEASE` |
| `org.springframework:spring-jdbc:4.3.29.RELEASE` |
| `org.springframework:spring-oxm:4.3.29.RELEASE` |
| `org.springframework:spring-tx:4.3.29.RELEASE` |
| `org.springframework:spring-web:4.3.29.RELEASE` |
| `org.springframework:spring-webmvc:4.3.29.RELEASE` |
| `org.xerial.snappy:snappy-java:1.1.7.3` |
| `stax:stax-api:1.0.1` |
| `xml-apis:xml-apis:1.4.01` |
- **仅在二进制坐标集合**:71 项
|坐标|
|----|
| `org.springframework.security:spring-security-rsa:1.0.3.BUILD-SNAPSHOT` |
| `unresolved:activation-1.1.jar` |
| `unresolved:annotations-2.0.1.jar` |
| `unresolved:ant-1.9.6.jar` |
| `unresolved:ant-launcher-1.9.6.jar` |
| `unresolved:archaius-core-0.6.6.jar` |
| `unresolved:asm-7.3.1.jar` |
| `unresolved:asm-commons-7.0.jar` |
| `unresolved:aspectjweaver-1.8.13.jar` |
| `unresolved:bcpkix-jdk15on-1.55.jar` |
| `unresolved:bcprov-jdk15on-1.55.jar` |
| `unresolved:consul-api-1.3.0.jar` |
| `unresolved:dom4j-1.6.1.jar` |
| `unresolved:freemarker-2.3.28.jar` |
| `unresolved:groovy-2.4.5-indy.jar` |
| `unresolved:hystrix-core-1.5.12.jar` |
| `unresolved:hystrix-javanica-1.5.12.jar` |
| `unresolved:hystrix-metrics-event-stream-1.5.12.jar` |
| `unresolved:hystrix-serialization-1.5.12.jar` |
| `unresolved:javax.inject-1.jar` |
| `unresolved:jodd-bean-3.7.1.jar` |
| `unresolved:jodd-core-3.7.1.jar` |
| `unresolved:kafka-clients-2.3.0.jar` |
| `unresolved:lombok-1.16.22.jar` |
| `unresolved:lz4-java-1.6.0.jar` |
| `unresolved:mysql-connector-java-5.1.47.jar` |
| `unresolved:netflix-commons-util-0.1.1.jar` |
| `unresolved:netflix-statistics-0.1.1.jar` |
| `unresolved:objenesis-2.1.jar` |
| `unresolved:poi-3.15.jar` |
| `unresolved:poi-ooxml-3.15.jar` |
| `unresolved:poi-ooxml-schemas-3.15.jar` |
| `unresolved:reactive-streams-1.0.2.jar` |
| `unresolved:reactor-core-2.0.8.RELEASE.jar` |
| `unresolved:reactor-stream-2.0.8.RELEASE.jar` |
| `unresolved:ribbon-2.2.5.jar` |
| `unresolved:ribbon-core-2.2.5.jar` |
| `unresolved:ribbon-httpclient-2.2.5.jar` |
| `unresolved:ribbon-loadbalancer-2.2.5.jar` |
| `unresolved:ribbon-transport-2.2.5.jar` |
| `unresolved:rxjava-1.2.0.jar` |
| `unresolved:rxjava-2.1.13.jar` |
| `unresolved:rxnetty-0.4.9.jar` |
| `unresolved:rxnetty-contexts-0.4.9.jar` |
| `unresolved:rxnetty-servo-0.4.9.jar` |
| `unresolved:servo-core-0.10.1.jar` |
| `unresolved:servo-internal-0.10.1.jar` |
| `unresolved:snappy-java-1.1.7.3.jar` |
| `unresolved:spring-aop-4.3.29.RELEASE.jar` |
| `unresolved:spring-aspects-4.3.29.RELEASE.jar` |
| `unresolved:spring-beans-4.3.29.RELEASE.jar` |
| `unresolved:spring-context-4.3.29.RELEASE.jar` |
| `unresolved:spring-context-support-4.3.29.RELEASE.jar` |
| `unresolved:spring-core-4.3.29.RELEASE.jar` |
| `unresolved:spring-expression-4.3.29.RELEASE.jar` |
| `unresolved:spring-jdbc-4.3.29.RELEASE.jar` |
| `unresolved:spring-oxm-4.3.29.RELEASE.jar` |
| `unresolved:spring-security-crypto-4.2.9.RELEASE.jar` |
| `unresolved:spring-tx-4.3.29.RELEASE.jar` |
| `unresolved:spring-web-4.3.29.RELEASE.jar` |
| `unresolved:spring-webmvc-4.3.29.RELEASE.jar` |
| `unresolved:stax-api-1.0.1.jar` |
| `unresolved:tomcat-annotations-api-8.5.34.jar` |
| `unresolved:tomcat-embed-core-8.5.34.jar` |
| `unresolved:tomcat-embed-el-8.5.34.jar` |
| `unresolved:tomcat-embed-websocket-8.5.34.jar` |
| `unresolved:tomcat-jdbc-8.5.34.jar` |
| `unresolved:tomcat-juli-8.5.34.jar` |
| `unresolved:xml-apis-1.4.01.jar` |
| `unresolved:xmlbeans-2.6.0.jar` |
| `unresolved:zstd-jni-1.4.0-1.jar` |
---
## 3. 无法解析 pom.properties 的嵌套 JAR(仅列文件名)
- **V1** 未解析条目:**88**
- `activation-1.1.jar`
- `annotations-2.0.0.jar`
- `ant-1.6.5.jar`
- `ant-1.9.6.jar`
- `ant-apache-bsf-1.9.4.jar`
- `ant-jakarta-oro-1.6.1.jar`
- `ant-launcher-1.9.6.jar`
- `ant-nodeps-1.8.1.jar`
- `archaius-core-0.6.6.jar`
- `asm-5.0.3.jar`
- `asm-analysis-5.0.3.jar`
- `asm-tree-5.0.3.jar`
- `asm-util-5.0.3.jar`
- `aspectjweaver-1.8.13.jar`
- `bcpkix-jdk15on-1.55.jar`
- `bcprov-jdk15on-1.55.jar`
- `bsf-2.4.0.jar`
- `classworlds-1.1-alpha-2.jar`
- `consul-api-1.3.0.jar`
- `dom4j-1.6.1.jar`
- `feign-core-8.18.0.jar`
- `feign-okhttp-8.18.0.jar`
- `freemarker-2.3.28.jar`
- `groovy-2.4.5-indy.jar`
- `hamcrest-core-1.3.jar`
- `hystrix-core-1.5.12.jar`
- `hystrix-javanica-1.5.12.jar`
- `hystrix-metrics-event-stream-1.5.12.jar`
- `hystrix-serialization-1.5.12.jar`
- `javax.inject-1.jar`
- `jdom-1.1.2.jar`
- `jodd-bean-3.7.1.jar`
- `jodd-core-3.7.1.jar`
- `junit-4.12.jar`
- `kafka-clients-2.3.0.jar`
- `lombok-1.16.18.jar`
- `lz4-java-1.6.0.jar`
- `mysql-connector-java-5.1.47.jar`
- `netflix-commons-util-0.1.1.jar`
- `netflix-statistics-0.1.1.jar`
- `objenesis-2.1.jar`
- `parboiled-core-1.1.7.jar`
- `parboiled-java-1.1.7.jar`
- `pegdown-1.6.0.jar`
- `poi-3.15.jar`
- `poi-ooxml-3.15.jar`
- `poi-ooxml-schemas-3.15.jar`
- `reactive-streams-1.0.2.jar`
- `reactor-core-2.0.8.RELEASE.jar`
- `reactor-stream-2.0.8.RELEASE.jar`
- … 省略 38 条
- **V2** 未解析条目:**70**
- `activation-1.1.jar`
- `annotations-2.0.1.jar`
- `ant-1.9.6.jar`
- `ant-launcher-1.9.6.jar`
- `archaius-core-0.6.6.jar`
- `asm-7.3.1.jar`
- `asm-commons-7.0.jar`
- `aspectjweaver-1.8.13.jar`
- `bcpkix-jdk15on-1.55.jar`
- `bcprov-jdk15on-1.55.jar`
- `consul-api-1.3.0.jar`
- `dom4j-1.6.1.jar`
- `freemarker-2.3.28.jar`
- `groovy-2.4.5-indy.jar`
- `hystrix-core-1.5.12.jar`
- `hystrix-javanica-1.5.12.jar`
- `hystrix-metrics-event-stream-1.5.12.jar`
- `hystrix-serialization-1.5.12.jar`
- `javax.inject-1.jar`
- `jodd-bean-3.7.1.jar`
- `jodd-core-3.7.1.jar`
- `kafka-clients-2.3.0.jar`
- `lombok-1.16.22.jar`
- `lz4-java-1.6.0.jar`
- `mysql-connector-java-5.1.47.jar`
- `netflix-commons-util-0.1.1.jar`
- `netflix-statistics-0.1.1.jar`
- `objenesis-2.1.jar`
- `poi-3.15.jar`
- `poi-ooxml-3.15.jar`
- `poi-ooxml-schemas-3.15.jar`
- `reactive-streams-1.0.2.jar`
- `reactor-core-2.0.8.RELEASE.jar`
- `reactor-stream-2.0.8.RELEASE.jar`
- `ribbon-2.2.5.jar`
- `ribbon-core-2.2.5.jar`
- `ribbon-httpclient-2.2.5.jar`
- `ribbon-loadbalancer-2.2.5.jar`
- `ribbon-transport-2.2.5.jar`
- `rxjava-1.2.0.jar`
- `rxjava-2.1.13.jar`
- `rxnetty-0.4.9.jar`
- `rxnetty-contexts-0.4.9.jar`
- `rxnetty-servo-0.4.9.jar`
- `servo-core-0.10.1.jar`
- `servo-internal-0.10.1.jar`
- `snappy-java-1.1.7.3.jar`
- `spring-aop-4.3.29.RELEASE.jar`
- `spring-aspects-4.3.29.RELEASE.jar`
- `spring-beans-4.3.29.RELEASE.jar`
- … 省略 20 条
@@ -0,0 +1,217 @@
# 电梯生产证据包差异分析(2026-04-30)
**证据根目录**(仓库内):[`maven-cw-elevator-application/logs/evidence/`](../../maven-cw-elevator-application/logs/evidence/)
本文基于 `collect_elevator_runtime_evidence.sh` 现场采集产出的三份时间戳目录,对**制品真实版本**、**本地配置**、**Consul 健康实例**、**日志关键行**与 **jcmd** 作对比。与历史排查主线的关系见 [`elevator-service-instance-missing-investigation.md`](elevator-service-instance-missing-investigation.md)。
---
## 1. 三份目录与「版本指纹」
| 目录 | 采集时间(`collected-at.txt` | `jar-path.txt` 展示名 | `jar.sha256.txt` | `jar-tf.txt` 内模块版本(lib | 说明 |
|------|-------------------------------|------------------------|------------------|--------------------------------|------|
| `elevator-evidence-20260430-112820` | 2026-04-30T11:28:20+0800 | `.../cw-elevator-application-V1.0.0.20211103.jar` | `8da5978a7b34...90544908` | **无**(当次未成功生成 `jar-tf` | 与 113912 **同一 JAR 字节**(见 sha256 |
| `elevator-evidence-20260430-113912` | 2026-04-30T11:39:12+0800 | 同上 | **同上** | 含 `cw-elevator-application-*-**2.0.7**.jar` | 可确认 fat-jar 内为 **Maven 2.0.7 发布结构** |
| `elevator-evidence-20260430-114350` | 2026-04-30T11:43:50+0800 | 同上 | `c087067de3f6...8942054`**不同** | 含 `cw-elevator-application-*-**1.0-SNAPSHOT**.jar` | **第三套制品**:与 113912 非同一文件;内嵌为 **SNAPSHOT 构件** |
**核心结论(勿仅看文件路径名)**
- 三份 `jar-path.txt` 的**文件名**均为历史目录 `cw-elevator-application-V1.0.0.20211103.jar`,但 **112820/113912 与 114350 的 sha256 不同**,说明现场曾**替换过**该路径上的 JAR 或 114350 采自**另一时刻/已换包**。
- **112820 与 113912** 的 sha256 **一致**,不是「V1 代码 vs V2 代码」的两套包,而是**同一物理 JAR 的两次采集**;区别仅在于 113912 多出了 `jar-tf.txt` / `java-version.txt` 等,用于认定模块版本为 **2.0.7**
- **114350** 代表另一制品:**内嵌 1.0-SNAPSHOT**,不得与「正式发布 2.0.7」混为一谈。
**JDK**113912、114350 的 `java-version.txt` 均为 **OpenJDK 1.8.0_41**(路径脚本写死 `/data/cwos/java`)。
---
## 2. 主轴对比:112820 ↔ 113912(同一 JAR、两轮采集)
| 维度 | 112820 | 113912 | 结论 |
|------|--------|--------|------|
| 磁盘 `application.properties` | 内容一致 | 一致 | `diff` **无差异** |
| 磁盘 `bootstrap.properties` | 一致 | 一致 | **无差异** |
| `proc-cmdline.txt` | `java -jar ... cw-elevator-application-V1.0.0.20211103.jar`(含 JDWP | **相同** | **无差异** |
| Consul `/v1/health/service/...?passing=true` | 各服务 **passing 数组长度均为 3** | **相同** | **无差异** |
| `elevator-app.log.keylines.txt` | 与 113912 同一时期的日志摘录 | 内容一致(同一日志切片) | **无实质环境差异** |
**小结**:此轴不宜表述为「V1 与 V2 运行态对比」,应表述为 **同一 2.0.7 制品(sha256 一致)在短时间内的两次证据归档**,第二次补充了 `jar tf` 与 JDK 版本文件。
---
## 3. 主轴对比:113912 ↔ 114350(两套不同 JAR
| 维度 | 113912 | 114350 | 结论 |
|------|--------|--------|------|
| `jar.sha256.txt` | `8da5978a...` | `c087067d...` | **不同文件** |
| fat-jar 内 `lib/cw-elevator-application-*.jar` | `*-2.0.7.jar` | `*-1.0-SNAPSHOT.jar` | **版本线不同** |
| 解压 `jar-application.properties.txt`BOOT-INF 内嵌默认) | `logging.level.*=debug``logging.path=/data/cwos/cw-elevator-application-V1.0.0.20211103/logs` | `logging.level.*=info``logging.path=logs` | **打包内嵌默认配置不同**(与磁盘目录 `application.properties` 可能再叠加覆盖) |
| 磁盘 `application.properties`(采集快照) | 需与 114350 目录单独比对 | | 以各目录下同名文件为准 |
**部署含义**
- **114350** 更符合「本地 Maven reactor **SNAPSHOT** 打出 fat-jar」的内嵌特征(`1.0-SNAPSHOT` + 内嵌 properties 为相对 `logs`)。
- **113912** 更符合「**发布流程 2.0.7**」打入的内嵌与 lib 版本。
若现场长期沿用目录名 `cw-elevator-application-V1.0.0.20211103` 仅替换 JAR,会出现「路径像 V1、内容实为 2.0.7 或 SNAPSHOT」——**必须以 sha256 + `jar tf` 为准**。
---
## 4. jcmd
三份目录的 `jcmd-system-properties.txt` 均为 **Attach 失败**`AttachNotSupportedException: Unable to open socket file`),无法对比进程内最终 system properties。后续现场需满足 JVM attach 条件后再采一次(或使用启动参数导出),否则 Ribbon/Feign 运行态只能依赖日志与磁盘配置。
---
## 5. 日志与 Ribbon 行为(三份 keylines 共性)
**112820 / 113912**`elevator-app.log.keylines.txt` 中可见一致现象(与 [`elevator-service-instance-missing-investigation.md`](elevator-service-instance-missing-investigation.md) 一致):
- **Consul 注册**`elevator-app` 成功注册(带 HTTP health)。
- **配置探针**:磁盘 `./bootstrap.properties``spring.cloud.consul.discovery.enabled=true`classpath 内嵌为 **false**(多源并存)。
- **`ninca-crk-std`**`DynamicServerListLoadBalancer` 使用 **`ConfigurationBasedServerList`**,但 **current list of Servers=[]**,随后出现 **`Load balancer does not have available server for client: ninca-crk-std`**。
- **其他客户端**(如 `cwos-portal``ninca-common`)日志中可见 Consul 解析出的 **3 台**实例。
**差异排查方向**(非本次证据目录两两 diff,而是现象归因):重点核对 **`ninca-crk-std` 的 Ribbon 静态列表 / `NincaCrkStdRibbonConfiguration` 生效路径**与 Consul 列表是否交替覆盖,详见上述 investigation 文档。
**114350**`elevator-app.log.keylines.txt` 与 113912 **文件不完全相同**`diff` 有差异),如需逐行对比可在本地对两份 keylines 执行 `diff -u`
---
## 6. `logs/evidence/elevator-app.log` 全量日志专项排查
**逐项走查(客户端名 / 时序 / Consul vs ConfigurationBased / bootstrap**:见 [`consul-ribbon-no-server-walkthrough.md`](consul-ribbon-no-server-walkthrough.md)。
针对 [`maven-cw-elevator-application/logs/evidence/elevator-app.log`](../../maven-cw-elevator-application/logs/evidence/elevator-app.log) 进行额外统计与时间线复盘:
### 6.1 关键信号统计
- `Load balancer does not have available server for client: ninca-crk-std`**290** 次
- `ConfigurationBasedServerList`**1** 次
- `ConsulServerList`**7** 次
- 探针启动信号(`CONFIG SOURCE PROBE START` / `RIBBON...PROBE` / `CONSUL...PROBE` / `ELEVATOR DIAGNOSTIC PROBES`):仅 **2** 条(其中可见的为 `CONFIG SOURCE PROBE START`
### 6.2 时间线(同一日志内存在两次启动)
1. **第一次启动窗口(11:16**
- `11:16:24` Tomcat 启动、Consul 注册;
- `11:16:24` ConfigSourceProbeRunner 打印:`ninca-crk-std.ribbon.listOfServers value=null``ninca-crk-std.ip=10.0.22.102:16106`
- `11:16:34` `ninca-crk-std` 初始化为 `ConfigurationBasedServerList`,但 `current list of Servers=[]`
- 随后大量出现 `Load balancer does not have available server for client: ninca-crk-std`
2. **第二次启动窗口(11:43**
- `11:43:24` 再次出现 Tomcat 启动与 Consul 注册(说明同一日志内发生过重启);
- `11:43:35` `ninca-crk-std` 初始化时已是 `current list of Servers=[...:16106 x3]`
- 第二次窗口未见与第一次同规模的“空列表 + 连续 no available server”模式。
### 6.3 结合证据包的解释
- `112820` / `113912` 与第一次窗口行为一致,暴露出 `ninca-crk-std` 在该时段未拿到可用服务列表;
- `114350` 对应另一制品(`1.0-SNAPSHOT`)后,日志中出现 `ninca-crk-std` 能初始化出 3 台服务的信号;
- 因三份 Consul 健康快照均显示 `ninca-crk-std` passing=3,可初步排除「Consul 没有实例」这一外因,更可能是客户端侧配置/初始化时序/构件差异导致。
---
## 7. Consul 健康快照
三份目录中下列服务的 **passing 实例数(JSON 数组长度)一致**:均为 **3**`elevator-app``cwos-portal``ninca-common``ninca-common-component-organization``ninca-crk-std``cloudwalk-device-thirdparty`)。
说明:**本次采集窗口内** Consul 侧上游实例数量**未**成为三份包之间的差异变量;与 JVM 内 Ribbon 列表为空等问题需从 **客户端配置与负载均衡初始化顺序** 侧继续查。
---
## 8. 建议的后续动作
1. **命名归档**:在证据目录或工单中显式标注 **JAR sha256****`jar tf``cw-elevator-application-*` 版本**,避免「V1 目录名」误导。
2. **修复 jcmd 采集**:解决 attach 权限 / JVM 参数后重采,补齐 **进程内** `ribbon.*` / `feign.*`
3. **`ninca-crk-std`**:按 investigation 文档与 **下节第 1 条** 优先验证 `ribbon.listOfServers``ninca-crk-std.ip` 的关系。
---
## 9. 综合证据 + 日志 + 多进程后的「下一步方向」
### 9.1 已对齐的事实(减少走弯路)
| 来源 | 结论 |
|------|------|
| 三份 `consul-health-*.json` | 各上游(含 `ninca-crk-std`**passing 均为 3** |
| `ps-ef.txt`(随证据采集) | 各业务为**独立 Java 进程**;`ninca-crk-std` 在目标环境以**单独进程**形式存在(与电梯进程不同) |
| `proc-cmdline.txt` | 电梯进程为 `java -jar`,工作目录下 **`cw-elevator-application-V1.0.0.20211103.jar`**(文件名可与真实字节不一致,须看 sha256) |
| `elevator-app.log` | **同一日志两次启动**:首次 **11:16** `ninca-crk-std` 负载均衡 **Servers=[]**;重启后 **11:43** 同客户端出现 **3 台 :16106**,说明问题偏 **客户端 Ribbon 配置/初始化时序**,而非「现场没有 `ninca-crk-std` 进程」 |
### 9.2 优先验证:Ribbon 静态列表键 ≠ 业务 `ninca-crk-std.ip`
证据包内 **`application.properties`**(及仓库 [`deploy/v2-maven/application.properties`](../../maven-cw-elevator-application/deploy/v2-maven/application.properties))仅有:
- `ninca-crk-std.ip=10.0.22.102:16106`(供业务代码等使用)
而探针行显示:
- `ninca-crk-std.ribbon.listOfServers value=null`
电梯侧对 `ninca-crk-std` 使用 [`NincaCrkStdRibbonConfiguration`](../../maven-cw-elevator-application/cw-elevator-application-starter/src/main/java/cn/cloudwalk/ribbon/NincaCrkStdRibbonConfiguration.java),其 `ConfigurationBasedServerList` **从 Ribbon 标准配置**(如 `ninca-crk-std.ribbon.listOfServers`)取服务器列表;**与 `ninca-crk-std.ip` 无自动绑定**`ninca-crk-std.ip` 在业务类中如 `AcsElevatorRecordServiceImpl``@Value` 使用)。
对照 [`deploy/v1-legacy/application.properties`](../../maven-cw-elevator-application/deploy/v1-legacy/application.properties) 中显式:
- `ninca-crk-std.ribbon.NIWSServerListClassName=...`
- `ninca-crk-std.ribbon.listOfServers=...`
**建议下一步(配置侧,变更须评审与灰度)**
1. 在**现场**与 **v2 部署模板**中显式增加与现场一致的 **`ninca-crk-std.ribbon.listOfServers`**(可填与日志中负载均衡最终一致的 **三台主机:16106**,或与 Consul 解析一致的主机名列表),使 **首次启动**即不为空;并与 `ninca-crk-std.ip` 的业务语义对齐(同一可达入口集合)。
2. 重启后对照日志:首次出现 `DynamicServerListLoadBalancer for client ninca-crk-std initialized`**`current list of Servers`** 是否直接非空。
### 9.3 观测与采集强化(不改业务契约前提下)
1. **对照 Ribbon / Consul 探针**(当前代码库默认**始终**运行;延迟见 `ElevatorProbeConstants`):在 `*-probe.log` 中查 **ribbonProbe instance**、**consulProbe instance** 行,与 JVM 及 Consul API 对照(见 [`scripts/collect_elevator_runtime_evidence.sh`](../../scripts/collect_elevator_runtime_evidence.sh))。
2. **修复 jcmd Attach**:解决 `jcmd-system-properties.txt` 中的 `AttachNotSupportedException` 后重采,便于核对 **进程内最终** `ribbon.*` / `feign.*`(与磁盘 properties 是否一致)。
### 9.4 仍建议对照的仓库文档
- [`elevator-service-instance-missing-investigation.md`](elevator-service-instance-missing-investigation.md)Ribbon 双路径(Consul vs ConfigurationBased)与现象描述。
- 若调整 `listOfServers`,需在变更说明中记录 **与对外 HTTP/Feign 契约不变**(仅内部路由与配置)。
---
## 10. `elevator-app-probe.log` 同步分析(仓库内样本)
**文件**[`maven-cw-elevator-application/logs/evidence/elevator-app-probe.log`](../../maven-cw-elevator-application/logs/evidence/elevator-app-probe.log)(与主日志同一次启动窗口 **2026-04-30 11:16:24**,仅含 `cn.cloudwalk.elevator.debug` 包输出。)
### 10.1 探针开关(首行汇总)
本证据文件采自 **2026-04-30** 进程;当时摘要行仍描述 **config / ribbon / consul** 三开关。当前仓库实现为:**三类探针默认全开**,调度仅改源码 [`ElevatorProbeConstants`](../../maven-cw-elevator-application/cw-elevator-application-starter/src/main/java/cn/cloudwalk/elevator/debug/ElevatorProbeConstants.java)**不再**使用 `elevator.*.probe.enabled`
- **`configProbe=true`**`ConfigSourceProbeRunner` 已执行(本文件主体)。
- **`ribbonProbe=false`**:当时未启用 Ribbon 探针属性,故本文件中**无** `ribbonProbe instance` 等行(非当前代码行为)。
- **`consulProbe=false`**:当时未启用 Consul HTTP 探针,故本文件中**无** `consulProbe instance` 等行(非当前代码行为)。
新版进程应在延迟(Consul 约 20s、Ribbon 约 22s)后于 `*-probe.log` 中出现 **consulProbe** / **ribbonProbe** 明细;与 `elevator-app.log` 中 Netflix Ribbon 行交叉验证时**无需**再开属性开关。
### 10.2 配置源冲突(与主日志 / keylines 一致)
| 键 | 合并后 `getProperty` | 并存来源 |
|----|----------------------|----------|
| `spring.cloud.consul.host` | `10.0.22.102` | 磁盘 `file:./bootstrap`**IP**`classpath:/bootstrap`**主机名** |
| `spring.cloud.consul.discovery.enabled` | `true` | 磁盘为 **true**classpath 为 **false**(最终以 Environment 合并结果为准,探针 `value=`**true** |
### 10.3 Ribbon 相关键在 Environment 中的显式值
- `*.ribbon.NIWSServerListClassName`**均为 `null`**(探针未解析到属性文件中的覆盖字符串)。
- `*.ribbon.listOfServers`**均为 `null`**。
- `ninca-crk-std.ip`**`10.0.22.102:16106`**`file:``classpath:` 一致)。
与 [`NincaCrkStdRibbonConfiguration`](../../maven-cw-elevator-application/cw-elevator-application-starter/src/main/java/cn/cloudwalk/ribbon/NincaCrkStdRibbonConfiguration.java) + 主日志中 **`ConfigurationBasedServerList` 且 Servers=[]** 的现象一并阅读:**Environment 层未出现 `ninca-crk-std.ribbon.listOfServers`**,与「仅靠业务键 `ninca-crk-std.ip`」并存。
### 10.4 小结
| 项目 | 结论 |
|------|------|
| 本文件作用 | 专用 **`elevator-app-probe.log`**,避免在主日志中筛选探针类 |
| 本次样本覆盖范围 | **仅 ConfigSource**(当时未开 Ribbon/Consul 探针);新版本默认可见全量探针 |
| 与排查关系 | 历史样本解释「旧证据缺 Ribbon/Consul 行」;现行构建以 `ElevatorProbeConstants` 为准,深层 Ribbon 行为仍可对照 **`elevator-app.log`** 中 `DynamicServerListLoadBalancer` |
---
**延伸(不改现场属性文件的审核备忘)**[`elevator-v1-v2-init-timing-config-audit.md`](elevator-v1-v2-init-timing-config-audit.md)(初始化时序、探针顺序、jcmd attach、V1/V2 模板对照)。
---
**文档生成说明**:基于仓库内已检入的 `logs/evidence` 快照文件;若现场重新采集,请更新本文件名中的日期或新增一篇并列保留历史结论。
@@ -0,0 +1,114 @@
# 电梯应用「服务实例缺失」排查结论(2026-04-30)
本文档落实排查计划:锁定运行形态、Ribbon ServerList 行为、Consul 健康实例、最小风险修复分支。
## 1. 运行版本与配置目录
### 1.1 仓库内 Maven 验证日志(`maven-cw-elevator-application/logs/elevator-app.log`
- **Tomcat 端口**`18081`(与 `deploy/README.md`**v2-maven** 并行对拍端口一致)。
- **Profile**`access-control`
- **Kafka**`192.168.3.12:9092`(本地验证栈)。
- **结论**:该日志对应 **本机/验证环境** 启动的 **Maven 构建版 V2 JAR**(非生产星中心 V1 目录),用于 API 对拍或本地联调。
### 1.2 生产侧采集证据(`artifacts/elevator-evidence-20260430-000038/`
- **JAR**`星中心/cw-elevator-application-V1.0.0.20211103/cw-elevator-application-V1.0.0.20211103.jar`V1 fat-jar)。
- **`start.sh`**`java -jar cw-elevator-application-V1.0.0.20211103.jar`**未**附加 `--spring.config.location`
- **`bootstrap.properties`(现场快照)**`spring.cloud.consul.discovery.enabled=false`Consul host 为 **主机名**(与发布包内 IP 形式不同)。
- **`application.properties`(现场快照)**:含 `feign.*.name`、业务参数、`ninca-crk-std.ip`**未见** `ninca-crk-std.ribbon.listOfServers`(与 [`deploy/v1-legacy/application.properties`](../../maven-cw-elevator-application/deploy/v1-legacy/application.properties) 中显式 Ribbon 静态段不一致时,行为依赖 JAR 版本与配置合并)。
**结论**:排查时需区分 **(A) 本仓库 Maven V2 + deploy/v2-maven** 与 **(B) 星中心 V1 fat-jar + 同目录配置**,二者 Consul/Ribbon 生效路径不同;勿混用日志归因。
---
## 2. `ninca-crk-std` 的 Ribbon ServerList 是否稳定
### 2.1 日志统计(同一 `elevator-app.log`
| 模式 | 日志特征 | 次数(近似) |
|------|-----------|----------------|
| Consul 发现 | `ServerList:ConsulServerList{serviceId='ninca-crk-std'` | **19** |
| 配置型列表 | 后续行出现 `ServerList:com.netflix.loadbalancer.ConfigurationBasedServerList@…`,且实例列表含静态地址(如 `10.128.161.95:16106` | **多条**`ConfigurationBasedServerList@` 在全日志约 **66** 处,含换行续行;并非全部为同一客户端,但 `ninca-crk-std` 存在两种初始化交替) |
### 2.2 代码与配置依据
- [`NincaCrkStdRibbonConfiguration`](../../maven-cw-elevator-application/cw-elevator-application-starter/src/main/java/cn/cloudwalk/ribbon/NincaCrkStdRibbonConfiguration.java) 强制使用 `ConfigurationBasedServerList`,注释说明用于避免 Consul 返回空列表时覆盖静态 `listOfServers`
- **事实**:日志仍出现 **`ConsulServerList`**,说明在部分生命周期/上下文刷新路径下,负载均衡仍会按 **Consul** 解析;**不稳定**,与「仅静态 Ribbon」预期不完全一致。
### 2.3 次要现象(同一日志)
- 即使走 `ConfigurationBasedServerList` 且实例为 `10.128.161.95:16106`,仍可能出现 **`Connection refused`**(对端未监听或网络不通),与「无实例」不同,需区分。
---
## 3. Consul 侧是否存在依赖服务实例(验证环境实测)
**`http://192.168.3.12:8500`**(仓库 `deploy` 文档中的本地 Consul)执行:
`GET /v1/health/service/<service>?passing=true`
| 服务名 | 结果 |
|--------|------|
| `cwos-portal` | `[]` |
| `ninca-common` | `[]` |
| `ninca-common-component-organization` | `[]` |
| `ninca-crk-std` | `[]` |
| `elevator-app` | **有** passing 实例(摘录响应中含 `elevator-app` 注册信息) |
**结论**:当前验证用 Consul 上 **四个上游均无健康实例**。若应用侧 **`spring.cloud.consul.discovery.enabled=true`**(早期发布包曾在 `bootstrap` 中如此配置;当前基线见 [`deploy/v2-maven/bootstrap.properties`](../../maven-cw-elevator-application/deploy/v2-maven/bootstrap.properties)),Ribbon 走 **`ConsulServerList`** 时会出现 **`Load balancer does not have available server`**,这与实测一致。
生产环境请在 **目标 Consul 地址**上重复上述 HTTP 检查([`scripts/collect_elevator_runtime_evidence.sh`](../../scripts/collect_elevator_runtime_evidence.sh) 已内置相同请求)。
---
## 4. 最小风险修复分支(二选一)
### 分支 A:禁用 Consul 客户端发现 + 静态 Ribbon(与 `deploy/v1-legacy`、较新发布包中对齐)
1. 设置 **`spring.cloud.consul.discovery.enabled=false`**(仍可保留 `consul.enabled=true` 用于配置中心等其他用途,以现场为准)。
2.**`application.properties`**(与 JAR 同目录或 Consul KV,以实际生效源为准)为各 Feign 客户端补充 **`*.ribbon.NIWSServerListClassName=com.netflix.loadbalancer.ConfigurationBasedServerList`** 与 **`*.ribbon.listOfServers=host:port`**(至少覆盖:`cwos-portal``ninca-common``ninca-common-component-organization``ninca-crk-std`)。
3. **`ninca-crk-std`**:与 [`deploy/v1-legacy/application.properties`](../../maven-cw-elevator-application/deploy/v1-legacy/application.properties) 一致,配置 `ninca-crk-std.ribbon.*``ninca-crk-std.ip`Maven V2 已含 `NincaCrkStdRibbonConfiguration`,仍需保证 **静态列表属性**在运行期可见。
4. 配置来源探针 **默认已运行**[`ConfigSourceProbeRunner`](../../maven-cw-elevator-application/cw-elevator-application-starter/src/main/java/cn/cloudwalk/elevator/debug/ConfigSourceProbeRunner.java));在 `*-probe.log` 核对 `*.ribbon.listOfServers` 的最终来源(无需再设 `elevator.config.probe.enabled`)。
### 分支 B:启用 Consul 服务发现
1. 保持 **`spring.cloud.consul.discovery.enabled=true`**。
2.**同一 Consul** 上确保四个服务 **注册成功且健康检查 passing**;服务名须与 `feign.*.name` 一致(如 `cwos-portal``ninca-common` 等)。
3. **不要求**静态 `listOfServers`;若仍报错,用 Consul UI/API 核对实例与健康检查脚本。
### 版本选择提示
- **较早的发布包(如 v2.0.1v2.0.3**`bootstrap` 中曾 **`discovery.enabled=true`**,在无上游注册的环境下更易触发本问题。
- **v2.0.4 及以后发布包****`discovery.enabled=false`**,与「静态 Ribbon」分支一致。
### `deploy/v2-maven/run.sh` 注意
当前 [`run.sh`](../../maven-cw-elevator-application/deploy/v2-maven/run.sh) 仅 **`java -jar`**,不注入 `file:./application.properties`。若未通过 Consul KV 提供 Ribbon 键,则依赖 JAR 内默认配置 —— 本地「仅 Consul、无上游」时仍会失败。验证/对拍时请确保 **外置 `application.properties` 与 JAR 同目录****显式 `--spring.config.location=...`**(以团队约定为准)。
---
## 5. 建议的只读复核命令(现场)
1. **进程与 JAR**`ps -ef | grep cw-elevator-application`;确认 **工作目录**与 **JAR 文件名**V1 vs V2)。
2. **Consul**`curl -s "http://<consul>:8500/v1/health/service/<feign服务名>?passing=true"`
3. **日志关键字**`ConsulServerList``ConfigurationBasedServerList``Load balancer does not have available server`
---
## 6. 一次性评估:应用内探针与对照方式
以下均在 **`cn.cloudwalk.elevator.debug`** 包内输出(WARN 用于异常路径),并 **双写** 主日志与 **`*-probe.log`**(见 `logs/logback.xml`);**默认始终启用**,调度见源码 **`ElevatorProbeConstants`**(不再使用 `elevator.*.probe.enabled`)。**Spring Cloud Consul**、**Netflix loadbalancer**、**Discovery** 相关 logger 在 `logback.xml` 中按 **DEBUG** 双写到 `*-probe.log`(与 `cn.cloudwalk.elevator.debug` 一致)。
| 探针 | 作用 | 与其他探针对照 |
|------|------|----------------|
| `ConfigSourceProbeRunner` | 启动期打印 Consul/Feign/Ribbon 关键键的 **value****PropertySource** 命中链 | 确认 `discovery.enabled``*.ribbon.listOfServers` 是否被 KV/本地覆盖 |
| `RibbonLoadBalancerProbeRunner` | 延迟后打印各 Ribbon 客户端 **实例级 host/port****`serverCount`** | **Consul passing=0 且此处也为 0**:多为静态配置未生效或未调用;**Consul>0 此处仍 0**:重点查 `NIWSServerListClassName` / 懒加载 |
| `ConsulUpstreamHealthProbeRunner` | 延迟 HTTP:**本服务**与上游 **`/v1/health/service/...`** **逐实例**endpoint、checks 摘要)、**`/v1/agent/self`** | 与上一行 **交叉验证**:区分「注册侧无实例」与「应用侧 Ribbon 未吃到地址」 |
启动时会打一行 **`ELEVATOR DIAGNOSTIC PROBES always on`** 汇总。进程外仍建议配合 [`scripts/collect_elevator_runtime_evidence.sh`](../../scripts/collect_elevator_runtime_evidence.sh) 做完整证据包。
**一次性阅读顺序**`*-probe.log` 中先 **CONFIG SOURCE** →(延迟后)**CONSUL** → **RIBBON**,再对照主日志中的业务异常时间线。
---
**文档维护**:若发行包 `bootstrap``run.sh` 再变更,请同步更新第 4 节与「版本选择提示」。
@@ -0,0 +1,67 @@
# 电梯 V1 / V2:初始化时序与配置审核备忘(不改现场属性文件)
**约束**:本文档仅做**代码与模板对照**、**启动与探针时序**说明;**不修改**现场 `bootstrap.properties` / `application.properties`
**关联**:证据与日志结论见 [`elevator-evidence-v1-v2-diff-20260430.md`](elevator-evidence-v1-v2-diff-20260430.md)Ribbon 现象见 [`elevator-service-instance-missing-investigation.md`](elevator-service-instance-missing-investigation.md)。
---
## 1. 仓库内「V1 模板」与「V2 模板」指代
| 指代 | 路径 | 用途 |
|------|------|------|
| V1 部署参考 | [`deploy/v1-legacy/application.properties`](../../maven-cw-elevator-application/deploy/v1-legacy/application.properties) | 同目录 fat-jar、Consul 发现关闭场景下的 **显式** `ninca-crk-std.ribbon.listOfServers` 示例 |
| V2 部署参考 | [`deploy/v2-maven/application.properties`](../../maven-cw-elevator-application/deploy/v2-maven/application.properties)、[`bootstrap.properties`](../../maven-cw-elevator-application/deploy/v2-maven/bootstrap.properties) | 当前 Maven 发布包拷贝来源;**含** `ninca-crk-std.ip`**默认不含** `ninca-crk-std.ribbon.listOfServers`(与 V1 示例段不同) |
现场实际生效属性以**磁盘文件 + Consul KV + 内嵌 classpath** 合并为准;证据包中探针已打印多源并存现象。
---
## 2. 应用入口与 Ribbon 绑定(代码层,与属性文件无关)
- 入口:[`ElevatorApplication`](../../maven-cw-elevator-application/cw-elevator-application-starter/src/main/java/cn/cloudwalk/elevator/ElevatorApplication.java)
- `@RibbonClient(name = "${feign.ninca-crk-std.name:ninca-crk-std}", configuration = NincaCrkStdRibbonConfiguration.class)`
- `ninca-crk-std` 专用配置:[`NincaCrkStdRibbonConfiguration`](../../maven-cw-elevator-application/cw-elevator-application-starter/src/main/java/cn/cloudwalk/ribbon/NincaCrkStdRibbonConfiguration.java)
- 使用 **`ConfigurationBasedServerList`**`initWithNiwsConfig`**Ribbon 约定键**(如 `ninca-crk-std.ribbon.listOfServers`)取列表。
- 业务键 **`ninca-crk-std.ip`**(如 `AcsElevatorRecordServiceImpl`**不自动写入** Ribbon ServerList;二者语义分离。
**审核结论**:在未改属性文件的前提下,若需证明「仅 ip、无 listOfServers」与空列表的因果关系,应依赖**日志中的 ServerList 初始化行** + **ConfigSourceProbe** 已打印的 `ninca-crk-std.ribbon.listOfServers value=null`(证据包已包含)。
---
## 3. 探针与启动时序(已实现的审查手段)
以下组件**默认均启用**(无 `elevator.*.probe` 开关);延迟秒数见 [`ElevatorProbeConstants`](../../maven-cw-elevator-application/cw-elevator-application-starter/src/main/java/cn/cloudwalk/elevator/debug/ElevatorProbeConstants.java)。顺序由 Spring `@Order` / `ApplicationRunner` / `ApplicationListener` 决定:
| 组件 | 触发时机 | 顺序要点 |
|------|-----------|----------|
| [`ElevatorProbeSummaryRunner`](../../maven-cw-elevator-application/cw-elevator-application-starter/src/main/java/cn/cloudwalk/elevator/debug/ElevatorProbeSummaryRunner.java) | `ApplicationRunner` | `@Order(HIGHEST_PRECEDENCE)`:最先一批 Runner |
| [`ConfigSourceProbeRunner`](../../maven-cw-elevator-application/cw-elevator-application-starter/src/main/java/cn/cloudwalk/elevator/debug/ConfigSourceProbeRunner.java) | `ApplicationRunner` | 默认顺序;打印 **file vs classpath** 的配置源 |
| [`RibbonLoadBalancerProbeRunner`](../../maven-cw-elevator-application/cw-elevator-application-starter/src/main/java/cn/cloudwalk/elevator/debug/RibbonLoadBalancerProbeRunner.java) | `ContextRefreshedEvent` | `@Order(LOWEST_PRECEDENCE)` + **延迟** `RIBBON_LOAD_BALANCER_PROBE_DELAY_SECONDS` |
| [`ConsulUpstreamHealthProbeRunner`](../../maven-cw-elevator-application/cw-elevator-application-starter/src/main/java/cn/cloudwalk/elevator/debug/ConsulUpstreamHealthProbeRunner.java) | 同上 | **延迟** `CONSUL_HTTP_PROBE_DELAY_SECONDS`(先于 Ribbon 数秒,减少日志交错) |
**审核结论**ConfigSource 探针回答「**合并后的 Environment 里键值与来源**」;Ribbon/Consul 探针回答「**延迟若干秒后**负载均衡与 Consul HTTP 是否一致」。与「首次请求才创建 LoadBalancer」的懒加载配合时,**日志时间戳**比单次启动瞬间的配置快照更能说明时序问题(见全量 `elevator-app.log` 中 11:16 vs 11:43 两次启动)。
---
## 4. jcmd attach 失败时的排查动作(不改属性)
采集脚本已输出 **`jcmd-attach-diagnose.txt`**(进程用户、`/tmp/hsperfdata_*`、cmdline 中与 attach 相关的 token)。常见修复:
1. **与 Java 进程同一用户**执行 `jcmd`(例如进程属 `cwos` 而当前为 `root` 时:`sudo -u cwos /data/cwos/java/bin/jcmd <PID> VM.system_properties`)。
2. 检查 **`/tmp/hsperfdata_<user>/<pid>`** 是否存在、权限是否正常。
3. 确认启动参数中是否包含 **`-XX:+DisableAttachMechanism`**(若有则需调整 **启动脚本/JVM 参数**,不属于应用 properties)。
4. JDWP`-Xdebug` / `-Xrunjdwp`)一般**不**单独阻断 attach;仍以用户与 hsperfdata 为主因居多。
---
## 5. 下一步「仅从审核角度」的建议清单(不写回属性文件)
1. 对照**本次证据包**与全量日志:确认 `ninca-crk-std` 首次出现 **`ConfigurationBasedServerList` + Servers=[]** 的线程与时间,是否与首次 Feign 调用/懒加载一致。
2. 对照 **V1 legacy 模板**与 **v2-maven 模板**中 **`ninca-crk-std.ribbon.*` 段的差异**,形成变更评审材料(**实施与否由现场窗口决定**,本文不修改文件)。
3. 复采证据时带上 **`jcmd-attach-diagnose.txt`** 与成功时的 **`jcmd-system-properties.txt`**,补齐进程内 `ribbon.*` 最终值。
4. 短时开启 **Ribbon / Consul 探针**(仅运行时开关,不改磁盘 properties 内容亦可由运维在启动命令注入 `-D`)用于一次性对照——若政策禁止任何参数变更,则仅依赖现有日志与 Consul JSON。
---
**文档性质**:研发侧审核备忘;不作为未经评审的生产变更指令。
@@ -0,0 +1,19 @@
release-visitor-noauth-verify-v20260430/
├── README.md
├── 操作手册.md
├── 执行流程设计-简化版.md
├── 打包说明.txt
├── MANIFEST.txt
├── python/
│ ├── quick_verify_visitor_floor_policy.py
│ ├── requirements.txt
│ └── requirements-min.txt
├── report/
│ └── .gitkeep
└── sql/
├── 黄平访客ID手工查询.sql
├── 租户访客策略基线核查.sql
├── 批量样本筛选-多公司多部门.sql
├── 人工核查最终楼层结果.sql
├── 标准批量25访客-执行后核验.sql
└── batch_cases.csv
@@ -0,0 +1,105 @@
# 访客无鉴权策略验证发布包(v20260430)
## 1. 发布目标
本目录为“黄平访问蒙海文”无鉴权策略验证的**版本化发布包**,用于生产执行、结果留痕与归档。
当前对应代码发布版本:`cw-elevator-application-2.0.9`
## 2. 包内文件
- `README.md`:发布说明(本文件)
- `操作手册.md`:完整操作步骤与判定规则
- `执行流程设计-简化版.md`:先明确流程再执行的最小闭环方案(推荐先读)
- `sql/黄平访客ID手工查询.sql`:生产手工查询黄平访客 ID 的 SQL
- `sql/批量样本筛选-多公司多部门.sql`:筛选多个公司/多个部门被访人样本 SQL
- `sql/人工核查最终楼层结果.sql`:自定义访客 ID 集合时执行后核验
- `sql/标准批量25访客-执行后核验.sql`:§4.0 单行命令固定 25 名访客号段后的执行后核验
- `python/quick_verify_visitor_floor_policy.py`:执行脚本快照(支持纯 HTTP;可选连组织库/电梯库)
- `python/requirements.txt``requests` + `pymysql`(预置样本拉取、`--verify-local-db`
- `python/requirements-min.txt`:仅 `requests`(不连库时)
- `report/`:脚本输出 JSON 汇总(打包时排除 `*.json` 历史文件)
- `打包说明.txt`:生产机 `pip install`、一键 zip、全量预置命令示例
- `MANIFEST.txt`:交付清单
## 3. 关键基线参数
- 被访人(蒙海文)`personId=964454497399468032`
- 访客(黄平)`personId=1102270499947507712`
- 租户 `businessId=2524639890ba4f2cba9ba1a4eeaa4015`
- 策略语义(与电梯源码一致):未传 **`floorIds`** 且策略启用且 **`allow_zone_ids`** 非空时,生效楼层为 **被访人 `floorList` ∩ `allow_zone_ids`**(求交);无策略或 allow 为空则仍为 **`floorList` 全集**。详见 [`visitor-registration-business-flow.md`](../visitor-registration-business-flow.md)、[`租户组织人员访客-数据模型与用例.md`](../../architecture/租户组织人员访客-数据模型与用例.md)。
## 4. 测试执行(一行命令)
以下参数已由交付侧与现场环境对齐:**组织** `http://10.0.22.207:8089`**电梯** `http://10.0.22.207:16112`**25 名测试访客** `personId` 为连续号段 `9199000100000000001``9199000100000000025`(预置脚本内置 25 个被访人样本,本命令**不访问 MySQL**)。
**操作:** 打开解压后的发布包目录(能看到子目录 `python/`),**只粘贴下面整行**,回车执行(自动安装缺失的 `requests` 并跑预置 25 人批量无鉴权探测):
```bash
python3 -m pip install -q -r python/requirements-min.txt && python3 python/quick_verify_visitor_floor_policy.py --mode noauth-probe --org-base-url "http://10.0.22.207:8089" --elevator-base-url "http://10.0.22.207:16112" --use-preset-cases --visitor-person-ids "$(python3 -c 'print(",".join(str(9199000100000000000+i) for i in range(1,26)))')" --probe-with-businessid --batch-output-summary "batch-preset-static-$(date +%Y%m%d-%H%M%S).json"
```
汇总 JSON`report/` 目录下文件名形如 `batch-preset-static-<时间戳>.json`
**执行后须查库分析:** 在目标环境 **`cw-elevator-application`** 库运行 `sql/标准批量25访客-执行后核验.sql`,将每名访客的 **`active_row_count``zone_id`** 与 JSON 中的 `derived.floor_count``derived.floors` 对齐;具体操作与判定要点见 **`操作手册.md` §4.0.1、§4.6**。
---
### 附录 A:单样本(广发基金基线)
```bash
python3 python/quick_verify_visitor_floor_policy.py \
--mode noauth-probe \
--org-base-url "http://10.0.22.207:8089" \
--elevator-base-url "http://10.0.22.207:16112" \
--business-id "2524639890ba4f2cba9ba1a4eeaa4015" \
--meng-person-id "964454497399468032" \
--visitor-person-id "1102270499947507712" \
--probe-with-businessid
```
该访客为存量人员:库表核验易与历史 `image_rule_ref` 混在一起;若以「本轮新增访客 + 证据」为目标,请以 **§4 一行批量号段 `919900…`** 为主。**操作手册 §4.2** 对上述边界有全文说明。
### 附录 B:连 MySQL 拉样本 / 库表比对
需与 HTTP 同属一套库的地址与账号由运维另行提供,不由本 README 承载;禁止使用与目标环境不一致的数据库串联验证。
### 附录 C`sql/batch_cases.csv` 批量
```bash
python3 python/quick_verify_visitor_floor_policy.py \
--mode noauth-probe \
--org-base-url "http://10.0.22.207:8089" \
--elevator-base-url "http://10.0.22.207:16112" \
--batch-input-csv "sql/batch_cases.csv" \
--visitor-person-ids "1102270499947507712,1102270499947507713,1102270499947507714" \
--visitor-names "黄志平A,黄志平B,黄志平C" \
--probe-with-businessid \
--batch-output-summary "batch-from-csv-$(date +%Y%m%d-%H%M%S).json"
```
### 附录 D:人员导出 CSV 自动筛选
```bash
python3 python/quick_verify_visitor_floor_policy.py \
--mode noauth-probe \
--org-base-url "http://10.0.22.207:8089" \
--elevator-base-url "http://10.0.22.207:16112" \
--batch-source-person-csv "../_cw_is_person__202604302030.csv" \
--exclude-business-ids "2524639890ba4f2cba9ba1a4eeaa4015" \
--sample-companies 3 \
--sample-persons-per-company 2 \
--visitor-person-ids "1102270499947507712,1102270499947507713,1102270499947507714" \
--visitor-names "黄志平A,黄志平B,黄志平C" \
--probe-with-businessid \
--batch-output-summary "batch-from-export-$(date +%Y%m%d-%H%M%S).json"
```
说明:导出 CSV 需含列 `BUSINESS_ID`,`ID`,`IS_DEL`,`NAME`(等);无部门列时汇总中 `department` 可能为空。
## 5. 输出位置
脚本输出(均在发布包下 `report/` 目录):
- 单样本:`quick-verify-<timestamp>.json`
- 标准批量:见 §4`batch-preset-static-*.json`
- 其他批量:`--batch-output-summary` 指定名;默认 `batch-summary.json`
@@ -0,0 +1,2 @@
# 仅调用组织/电梯 HTTP,不连 MySQL
requests>=2.28.0,<3
@@ -0,0 +1,5 @@
# 生产验证机:Python 3.8+
# 仅 HTTP 探测:pip install -r requirements-min.txt
requests>=2.28.0,<3
# 可选(--fetch-preset-from-org-db / --verify-local-db
pymysql>=1.0.0,<2
@@ -0,0 +1,4 @@
business_id,meng_person_id,company,department
2524639890ba4f2cba9ba1a4eeaa4015,964454497399468032,广发基金,示例部门A
replace-business-id-2,replace-person-id-2,示例公司2,示例部门B
replace-business-id-3,replace-person-id-3,示例公司3,示例部门C
1 business_id meng_person_id company department
2 2524639890ba4f2cba9ba1a4eeaa4015 964454497399468032 广发基金 示例部门A
3 replace-business-id-2 replace-person-id-2 示例公司2 示例部门B
4 replace-business-id-3 replace-person-id-3 示例公司3 示例部门C
@@ -0,0 +1,49 @@
-- 用途:脚本执行后,人工核查访客最终楼层权限
-- 说明:
-- * 「已授权楼层」= image_rule_ref 中 person_delete = 0 的行(与 passRule/image 可查到的楼层一致)
-- * person_delete = 1 为撤销/作废,不参与当前授权
-- 将 IN (...) 中的访客 person_id 替换为本次执行的访客集合
-- 主查:仅已授权楼层(推荐与接口 / JSON derived.floors 对拍)
SELECT
irr.person_id,
irr.business_id,
irr.zone_id,
irr.zone_name,
irr.last_update_time
FROM `cw-elevator-application`.`image_rule_ref` irr
WHERE irr.person_id IN (
'1102270499947507712'
-- ,'替换为其他访客personId'
)
AND irr.person_delete = 0
ORDER BY irr.person_id, irr.zone_id;
-- 明细(含已撤销历史行,核对 person_delete / 时间线时用)
SELECT
irr.person_id,
irr.business_id,
irr.zone_id,
irr.zone_name,
irr.person_delete,
irr.create_time,
irr.last_update_time
FROM `cw-elevator-application`.`image_rule_ref` irr
WHERE irr.person_id IN (
'1102270499947507712'
-- ,'替换为其他访客personId'
)
ORDER BY irr.person_id, irr.last_update_time DESC, irr.zone_id;
-- 可选:统计每个访客当前「已授权」楼层数量(person_delete = 0
SELECT
irr.person_id,
COUNT(1) AS floor_count
FROM `cw-elevator-application`.`image_rule_ref` irr
WHERE irr.person_id IN (
'1102270499947507712'
-- ,'替换为其他访客personId'
)
AND irr.person_delete = 0
GROUP BY irr.person_id
ORDER BY irr.person_id;
@@ -0,0 +1,35 @@
-- 用途:从组织库筛选“多个公司 + 多个部门”的被访人样本
-- MySQL:连接主机/端口/账号按**当前环境**填写(开发与生产分离;不要用开发库导出的样本去打生产)
--
-- 已与 component-organization 典型结构对齐(2026-04-30 开发库 INFORMATION_SCHEMA 核对):
-- cw_is_person 人员主键列为 ID(无 person_id);删除标记 IS_DEL(无 deleted);
-- 无 labels/business_name/organization_name 列;访客身份通过 cw_is_person_label_ref + cw_is_label 识别。
-- 连接参数可复制 maven-cw-elevator-application/tools/visitor_floor_verification/.env.visitor_verify(勿提交密钥)。
SELECT
p.BUSINESS_ID AS business_id,
p.ID AS meng_person_id,
COALESCE(parent_org.NAME, '') AS company,
COALESCE(o.NAME, '') AS department
FROM `component-organization`.`cw_is_person` p
INNER JOIN `component-organization`.`cw_is_person_organization_ref` r ON r.PERSON_ID = p.ID
LEFT JOIN `component-organization`.`cw_is_organization` o ON o.ID = r.ORG_ID
LEFT JOIN `component-organization`.`cw_is_organization` parent_org ON parent_org.ID = o.PARENT_ID
WHERE (p.IS_DEL = 0 OR p.IS_DEL IS NULL)
AND p.BUSINESS_ID IS NOT NULL
AND p.BUSINESS_ID <> ''
AND NOT EXISTS (
SELECT 1
FROM `component-organization`.`cw_is_person_label_ref` lr
INNER JOIN `component-organization`.`cw_is_label` lb ON lb.ID = lr.LABEL_ID
WHERE lr.PERSON_ID = p.ID
AND lb.BUSINESS_ID = p.BUSINESS_ID
AND lb.NAME = '访客'
)
ORDER BY p.BUSINESS_ID, department, p.LAST_UPDATE_TIME DESC;
-- 建议导出后人工抽样:
-- 1) 至少 3 个 business_id
-- 2) 每个 business_id 至少 2 个不同 department
-- 3) 生成 batch_cases.csv,列头固定为:
-- business_id,meng_person_id,company,department
@@ -0,0 +1,58 @@
-- 用途:`README`/操作手册 §4.0 标准单行批量跑完后,在电梯库核查写库是否与接口侧一致
-- 库:`cw-elevator-application`
-- 表:`image_rule_ref`(访客 person_id 维度楼层规则)
-- 访客清单:与本包约定的 91990001000000000019199000100000000025 完全一致;若现场改用其它 personId,请改下方 expected 子查询或直接用 `sql/人工核查最终楼层结果.sql`。
-- ------------------------------------------------------------------
-- A) 每名访客当前「有效」规则行数 + 最近一次更新时间(核对 JSON 里的 floor_count / 时间点)
-- ------------------------------------------------------------------
SELECT
e.visitor_person_id,
SUM(CASE WHEN irr.person_delete = 0 THEN 1 ELSE 0 END) AS active_row_count,
MAX(CASE WHEN irr.person_delete = 0 THEN irr.last_update_time END) AS latest_active_update_ms
FROM (
SELECT '9199000100000000001' AS visitor_person_id
UNION ALL SELECT '9199000100000000002'
UNION ALL SELECT '9199000100000000003'
UNION ALL SELECT '9199000100000000004'
UNION ALL SELECT '9199000100000000005'
UNION ALL SELECT '9199000100000000006'
UNION ALL SELECT '9199000100000000007'
UNION ALL SELECT '9199000100000000008'
UNION ALL SELECT '9199000100000000009'
UNION ALL SELECT '9199000100000000010'
UNION ALL SELECT '9199000100000000011'
UNION ALL SELECT '9199000100000000012'
UNION ALL SELECT '9199000100000000013'
UNION ALL SELECT '9199000100000000014'
UNION ALL SELECT '9199000100000000015'
UNION ALL SELECT '9199000100000000016'
UNION ALL SELECT '9199000100000000017'
UNION ALL SELECT '9199000100000000018'
UNION ALL SELECT '9199000100000000019'
UNION ALL SELECT '9199000100000000020'
UNION ALL SELECT '9199000100000000021'
UNION ALL SELECT '9199000100000000022'
UNION ALL SELECT '9199000100000000023'
UNION ALL SELECT '9199000100000000024'
UNION ALL SELECT '9199000100000000025'
) e
LEFT JOIN `cw-elevator-application`.`image_rule_ref` irr
ON irr.person_id = e.visitor_person_id
GROUP BY e.visitor_person_id
ORDER BY e.visitor_person_id;
-- ------------------------------------------------------------------
-- B) 有效规则明细(与报告 `derived.floors` 比对 zone_id;按人+时间排序)
-- ------------------------------------------------------------------
SELECT
irr.person_id,
irr.zone_id,
irr.zone_name,
irr.person_delete,
irr.business_id,
irr.create_time,
irr.last_update_time
FROM `cw-elevator-application`.`image_rule_ref` irr
WHERE irr.person_id BETWEEN '9199000100000000001' AND '9199000100000000025'
ORDER BY irr.person_id, irr.last_update_time DESC, irr.zone_id;
@@ -0,0 +1,43 @@
-- 租户访客楼层策略最小核查 SQL(执行前确认数据库实例为电梯业务库)
-- 目标租户:广发基金 business_id = 2524639890ba4f2cba9ba1a4eeaa4015
-- 1) 表结构与索引确认
SHOW CREATE TABLE tenant_visitor_floor_policy;
-- 2) 广发租户策略主检查
SELECT id,
business_id,
policy_type,
allow_zone_ids,
building_id,
enabled,
policy_version,
updated_at,
remark
FROM tenant_visitor_floor_policy
WHERE business_id = '2524639890ba4f2cba9ba1a4eeaa4015'
ORDER BY updated_at DESC, policy_version DESC;
-- 3) 同租户是否存在多条默认策略(building_id 为空)
SELECT business_id, COUNT(*) AS cnt
FROM tenant_visitor_floor_policy
WHERE business_id = '2524639890ba4f2cba9ba1a4eeaa4015'
AND (building_id IS NULL OR building_id = '')
GROUP BY business_id
HAVING COUNT(*) > 1;
-- 4) enabled 与 policy_type 分布
SELECT policy_type, enabled, COUNT(*) AS cnt
FROM tenant_visitor_floor_policy
WHERE business_id = '2524639890ba4f2cba9ba1a4eeaa4015'
GROUP BY policy_type, enabled
ORDER BY cnt DESC;
-- 5) allow_zone_ids 是否包含 28F zone_id
SELECT id, allow_zone_ids
FROM tenant_visitor_floor_policy
WHERE business_id = '2524639890ba4f2cba9ba1a4eeaa4015'
AND enabled = 1
AND policy_type = 'INTERSECT_ALLOWLIST'
AND allow_zone_ids LIKE '%605560545117995008%';
@@ -0,0 +1,18 @@
-- 访客:黄平(手机号 13926442944)手工查询 SQL
-- 已确认库表:component-organization.cw_is_person
SELECT
person_id,
name,
mobile,
business_id,
labels,
deleted,
create_time,
update_time
FROM `component-organization`.`cw_is_person`
WHERE business_id = '2524639890ba4f2cba9ba1a4eeaa4015'
AND name = '黄平'
AND mobile = '13926442944'
ORDER BY update_time DESC;
@@ -0,0 +1,31 @@
发布包目录(源码内):
docs/testing/release-visitor-noauth-verify-v20260430
一、测试执行(单行,与 README「4」一致;在解压后的发布包根目录执行,须有子目录 python/)
python3 -m pip install -q -r python/requirements-min.txt && python3 python/quick_verify_visitor_floor_policy.py --mode noauth-probe --org-base-url "http://10.0.22.207:8089" --elevator-base-url "http://10.0.22.207:16112" --use-preset-cases --visitor-person-ids "$(python3 -c 'print(",".join(str(9199000100000000000+i) for i in range(1,26)))')" --probe-with-businessid --batch-output-summary "batch-preset-static-$(date +%Y%m%d-%H%M%S).json"
二、一键打包(在仓库根「源码」目录执行,排除本地 report 里的 JSON 痕迹与 __pycache__
STAMP=$(date +%Y%m%d-%H%M%S)
OUT="docs/testing/release-visitor-noauth-verify-v20260430-prod-${STAMP}.zip"
zip -r "$OUT" docs/testing/release-visitor-noauth-verify-v20260430 \
-x 'docs/testing/release-visitor-noauth-verify-v20260430/report/*.json' \
-x '*.pyc' -x '*__pycache__*' -x '*.pyo'
unzip -l "$OUT" | tail -5
echo "written: $OUT"
三、解压到测试机后的目录示例
mkdir -p ~/visitor-noauth-verify && cd ~/visitor-noauth-verify
unzip -q release-visitor-noauth-verify-v20260430-prod-*.zip
cd docs/testing/release-visitor-noauth-verify-v20260430
(在此目录执行上文「一行命令」)
四、打包前自检
1) python/quick_verify_visitor_floor_policy.py、requirements*.txt 存在
2) sql/、README.md 与交付地址/访客号段约定一致
3) MANIFEST.txt 与目录一致
五、选配:连 MySQL 等参数由运维另表提供,不写死于此文件;勿用开发与目标不一致的库串联 HTTP。
@@ -0,0 +1,90 @@
# 访客楼层策略验证执行流程(简化版)
## 1. 目标
按固定顺序完成两组验证,并输出汇总结果:
1. **基线组(广发基金)**:新增“黄平访客 -> 被访人蒙海文(`personId=964454497399468032`)”,再查询该访客楼层权限;
2. **对照组(其他公司多样本)**:从数据库筛选多个公司/多个部门被访人,分别新增“黄志平访客”,再查询各自楼层权限;
3. 最终输出“每个样本是否成功、楼层数量与楼层清单”。
> 说明:本流程强调顺序和可复核性,不再依赖复杂自动推断。
## 2. 统一原则
- 只以 `personId` 作为最终查询键,不以姓名直接判定权限。
- 姓名查询仅用于“定位候选人”,不用于最终业务判定。
- 判定顺序固定:**先写(add/visitor),再读(passRule/image**。
## 3. 执行总流程(必须按顺序)
### 步骤A:准备参数与样本
- 访客固定:黄平/黄志平(按现场实际确认对应 `visitorPersonId`
- 先准备两类样本:
- 样本1(广发基金基线):`businessId=252463...`,被访人 `964454497399468032`
- 样本2(多公司多部门对照):在**与目标验证环境一致**的组织库/MySQL 上筛选多个公司和部门被访人(禁止使用开发库数据去打生产接口)
### 步骤B:执行样本1(广发基金基线)
1.`add/visitor` 新增访客;
2. 紧接着调 `passRule/image` 查询楼层;
3. 记录基线组结果(期望仅 `28F`,若策略开启)。
### 步骤C:执行样本2(多公司多部门)
对每个被访人样本重复:
1.`add/visitor` 新增“黄志平访客”;
2.`passRule/image` 查询该访客楼层;
3. 记录结果到汇总表。
### 步骤D:输出总结果
按样本输出字段:
- 公司
- 部门
- 被访人 `personId`
- 访客 `personId`
- `add/visitor` 结果码
- 楼层数量
- 楼层清单
## 4. 异常分流(必须遵守)
### 4.1 add/visitor 失败(任何样本)
结论:该样本不具备“策略生效验证条件”。
动作:
1. 查同时间窗口服务日志;
2. 定位具体失败点(远程超时、依赖服务不可用、SQL异常等);
3. 修复后仅重跑失败样本。
### 4.2 add/visitor 成功但楼层不符
动作:
1. 查策略读取日志(`policyDecision``allowFloorSize``effectiveFloorSize`);
2. 查策略表配置是否匹配租户;
3.`image_rule_ref` 当前 `person_delete=0` 记录是否包含历史残留。
## 5. 为什么采用该顺序
- 先做广发基金基线,可快速判断策略主路径是否正常;
- 再做多公司多部门对照,可评估是否存在租户间差异或历史规则干扰;
- 最后统一汇总,避免单条日志或单个样本误导结论。
## 6. 推荐命令模板(单样本)
```bash
python3 python/quick_verify_visitor_floor_policy.py \
--mode noauth-probe \
--org-base-url "http://10.0.22.207:8089" \
--elevator-base-url "http://10.0.22.207:16112" \
--business-id "2524639890ba4f2cba9ba1a4eeaa4015" \
--meng-person-id "964454497399468032" \
--visitor-person-id "1102270499947507712" \
--probe-with-businessid
```
> 多样本场景建议外层脚本循环调用本命令,并将结果JSON汇总为一张表。
@@ -0,0 +1,194 @@
# 访客无鉴权策略验证-操作手册(发布版)
## 1. 适用范围
- 目标:验证无鉴权模式下访客接口是否可调用,以及“黄平访问蒙海文”是否触发策略。
- 环境:生产环境(建议低峰时段执行)。
- 对应版本:`cw-elevator-application-2.0.9`
- 建议先读:`执行流程设计-简化版.md`(先定流程,再执行)
## 2. 前置条件
1. Python 3.8+
2. **推荐(与 §4.0 一致)**`python3 -m pip install -r python/requirements-min.txt`(安装 `requests`)。若仅单笔安装亦可:`python3 -m pip install requests`
3. 关键参数确认:
- `businessId=2524639890ba4f2cba9ba1a4eeaa4015`
- `蒙海文personId=964454497399468032`
- `黄平personId=1102270499947507712`
- `黄平姓名=黄平``手机号=13926442944`(仅用于人工核对)
说明:
- 被访者ID参数为 `--meng-person-id`,默认即 `964454497399468032`,可按现场覆盖。
## 3. 手工 SQL(访客 ID 复核)
见:`sql/黄平访客ID手工查询.sql`
## 3.1 策略基线核查 SQL(必须先执行)
见:`sql/租户访客策略基线核查.sql`
重点核验:
- `business_id='2524639890ba4f2cba9ba1a4eeaa4015'`
- `policy_type='INTERSECT_ALLOWLIST'`
- `enabled=1`
- `allow_zone_ids` 包含 `605560545117995008`28F
- 同租户 `building_id` 为空的默认策略仅 1 条
- 策略语义(与电梯源码一致):启用且 **`allow_zone_ids`** 非空时,访客生效楼层为 **被访人组织组件返回的 `floorList` 与 `allow_zone_ids` 的交集(求交)**;交集为空则业务失败 **`76260532`**。勿将本文旧稿「覆盖优先」理解为跳过求交——详见 [`visitor-registration-business-flow.md`](../visitor-registration-business-flow.md)、[`租户组织人员访客-数据模型与用例.md`](../../architecture/租户组织人员访客-数据模型与用例.md)。
## 3.2 多公司多部门样本筛选 SQL(第二步)
见:`sql/批量样本筛选-多公司多部门.sql`
筛选结果请保存为 `sql/batch_cases.csv`,列头要求:
`business_id,meng_person_id,company,department`
## 4. 执行步骤
### 4.0 标准预置 25 人批量(推荐,单行命令)
在发布包根目录(见 4.1)下**复制整行**执行即可(与 `README.md` §4 相同;不写占位符:组织/电梯 URL 与访客号段已由交付对齐):
```bash
python3 -m pip install -q -r python/requirements-min.txt && python3 python/quick_verify_visitor_floor_policy.py --mode noauth-probe --org-base-url "http://10.0.22.207:8089" --elevator-base-url "http://10.0.22.207:16112" --use-preset-cases --visitor-person-ids "$(python3 -c 'print(",".join(str(9199000100000000000+i) for i in range(1,26)))')" --probe-with-businessid --batch-output-summary "batch-preset-static-$(date +%Y%m%d-%H%M%S).json"
```
结果见 `report/batch-preset-static-*.json`
### 4.0.1 执行后数据库核验(必须)
在完成 §4.0 且已拿到批量 JSON 后,于**与本环境电梯服务写入同一套库的** MySQL(`cw-elevator-application`)执行:
`sql/标准批量25访客-执行后核验.sql`
**如何对照判断「是否跑成功」**
1. 打开本轮 `report/batch-preset-static-*.json`,对每条样本看 `steps.add_visitor.business_ok``derived.floor_count``grade`
2.**`add_visitor` 业务成功** 且 `passRule/image` HTTP 大体正常的样本,在同一库中期望:查询 **A** 中该行访客的 **`active_row_count` ≥ 1**(租户策略或写库链路正常时,`person_delete=0` 的规则行应与接口返回楼层有对应);**全部为 0** 则重点排查写库延迟、租户/访客 ID 不真实、或网关虽 200 实际未打到目标实例。
3. 查询 **B** 与 JSON 内 `derived.floors[].zoneId` 做逐项比对;若库中 `person_delete=1` 的历史行较多,结合 `last_update_time` 看是否为本次执行产生的新生效行。
4. 若访客号段与本包约定不一致(非 `919900…`),请改用 `sql/人工核查最终楼层结果.sql`,将 `IN (...)` 换为当天 JSON 中全部 `resolved_visitor_person_id`
### 4.1 进入发布目录
```bash
cd docs/testing/release-visitor-noauth-verify-v20260430
```
### 4.2 样本1(广发基金基线)执行
本节「黄平 + 蒙海文」样本用于:**无鉴权下探针是否可走通**,以及 **`passRule/image` 返回是否与租户策略语义一致**。它**不是用来**证明「在本次执行中产出了全新访客主数据」——`add/visitor` 传入的是已在组织/电梯侧建档的访客 `personId` 时,写库常为**续约/补齐规则**`image_rule_ref` 里的行常与**历史登记**混在一起。
若验收目标是「必须先有真实新增访客,再验证派梯」,请:
- **优先**:走 **§4.0** 约定号段 **`9199000100000000001``…0025`** 的批量预置链路(租户内已预置对应用人,`image_rule_ref` 证据与 JSON 对齐);
- 或:业务流程上**新开一名访客**,再将其 `visitorPersonId` 交给本脚本;查库时对 `last_update_time` 与脚本 JSON 顶层 **`started_at`** 做对时(仅能辅助说明「本轮是否写过」)。
```bash
python3 python/quick_verify_visitor_floor_policy.py \
--mode noauth-probe \
--org-base-url "http://10.0.22.207:8089" \
--elevator-base-url "http://10.0.22.207:16112" \
--business-id "2524639890ba4f2cba9ba1a4eeaa4015" \
--meng-person-id "964454497399468032" \
--visitor-person-id "1102270499947507712" \
--probe-with-businessid
```
### 4.3 样本2(其他公司多部门)执行
在与**当前验证目标环境一致**的 MySQL 上执行 `sql/批量样本筛选-多公司多部门.sql`(或等价查询),导出被访人到 `sql/batch_cases.csv`。**禁止**用开发环境数据库导出样本却去打生产 HTTP。**开发环境快照仅可用于开发联调**,生产走查必须使用生产侧数据或手写/审批过的样本 CSV。
```bash
python3 python/quick_verify_visitor_floor_policy.py \
--mode noauth-probe \
--org-base-url "http://10.0.22.207:8089" \
--elevator-base-url "http://10.0.22.207:16112" \
--batch-input-csv "sql/batch_cases.csv" \
--visitor-person-ids "<访客ID1>,<访客ID2>,<访客ID3>" \
--visitor-names "黄志平A,黄志平B,黄志平C" \
--probe-with-businessid
```
建议最少覆盖:
- 3 个不同公司;
- 每公司 2 个不同部门被访人。
若已导出 `docs/testing/_cw_is_person__202604302030.csv`,可直接自动筛选(排除广发基金):
```bash
python3 python/quick_verify_visitor_floor_policy.py \
--mode noauth-probe \
--org-base-url "http://10.0.22.207:8089" \
--elevator-base-url "http://10.0.22.207:16112" \
--batch-source-person-csv "../_cw_is_person__202604302030.csv" \
--exclude-business-ids "2524639890ba4f2cba9ba1a4eeaa4015" \
--sample-companies 3 \
--sample-persons-per-company 2 \
--visitor-person-ids "<访客ID1>,<访客ID2>,<访客ID3>" \
--visitor-names "黄志平A,黄志平B,黄志平C" \
--probe-with-businessid
```
说明:
- 自动筛选依赖列:`BUSINESS_ID`,`ID`,`NAME`;若存在 **`IS_DEL`**,脚本会**跳过已删除行**`IS_DEL≠0` 或与 `true`/`1` 等价)。
- 该 CSV 若无标准部门列,汇总中 `department` 将为空。
### 4.4 结果判定
脚本 `noauth-probe` 对每条样本计算 `grade`(单样本写入 `quick-verify-*.json`;批量写入每条 `results[]`):
- `grade=high_risk`:任一步均未出现 401/403,且 **`add/visitor` 的 HTTP 成功(&lt;300)且接口业务码判定为成功**(`business_ok`),判定高风险放开(安全问题成立)。若仅 HTTP 200 但业务失败,归为 `needs_review`,不是 `high_risk`
- `grade=expected_block`**人员详情、`add/visitor``passRule/image` 任一步**出现 401/403,视为无鉴权被拦截,符合安全预期。
- `grade=needs_review`:未出现 401/403,但未达到上述「放行且业务成功」条件(例如网关超时、业务码失败等),需人工复核。
- `grade=failed`(批量中单条可出现):访客 `personId` 无法解析且无内置兜底等情况,脚本未完成调链;不按上述安全三档解释,需先看 `summary`/JSON 报错原因。
### 4.5 汇总输出(必须)
最终按样本输出表格(建议 CSV/Markdown;字段可从批量 JSON **`results[]`** 各条中取):
- 公司:`sample.company`
- 部门:`sample.department`
- 被访人 `personId``args.meng_person_id`
- 访客 `personId``args.resolved_visitor_person_id`
- **`add/visitor` 业务码**`steps.add_visitor.business_code`(及 `http_status`
- **`passRule/image`**`steps.passrule_image` 内的 `business_code` / `http_status`
- 楼层数量:`derived.floor_count`
- 楼层清单:`derived.floors`(元素含 `zoneId`/`zoneName`
- 安全分档:`grade``summary`
控制台会摘要打印 `company/department``addCode``floorCount`;完整以 JSON 为准。
批量汇总文件:**默认** `report/batch-summary.json`;若使用了 `--batch-output-summary`(如 §4.0 的 `batch-preset-static-*.json`),则路径为 **`report/` + 传入文件名**。
### 4.6 人工 SQL 核查最终结果(最后一步)
- §4.0 固定 25 号段:**优先**执行 `sql/标准批量25访客-执行后核验.sql`
- 其它访客清单或单笔核对:执行 `sql/人工核查最终楼层结果.sql`,自行替换 `IN (...)`
核查要点:
- 按本次访客ID集合过滤,确认 `person_delete=0` 的有效规则;
- 对比 `zone_id` 与脚本输出楼层清单;
- 如存在历史残留,结合 `create_time` / **`last_update_time`**`image_rule_ref`)判定最新记录。
### 4.7 业务侧整改后关键日志检查点
本版整改聚焦业务策略链路,不调整鉴权逻辑。应用日志需出现:
- 策略决策日志(`PersonRuleServiceImpl`)含字段:
- `policyDecision``hostFloorSize``allowFloorSize``effectiveFloorSize`(有一条覆盖生效日志中占位名为 `effectiveSize`,与同次决策中的楼层数量一致)、`policyId``policyVersion`
失败路径上的告警亦多为 `WARN`/`INFO`(如「访客派梯楼层决策失败-…」「allow_zone_ids JSON 无效」),便于在无 DEBUG 前提下排查。**是否仍存在「仅为探针、且仍为 DEBUG」的日志行,请以当前发布包镜像实际 `logback` 与源码为准逐项核对**。
## 5. 证据留档
至少归档以下内容:
1. 执行命令
2. 脚本输出摘要(控制台)
3. 生成的 JSON**单样本** `report/quick-verify-*.json`**标准批量** `report/batch-preset-static-*.json` 或其他 `--batch-output-summary` 指定名
4. **`sql/标准批量25访客-执行后核验.sql`(或等价)查询导出**与其它 SQL 核验结果一并留档
5. 关键接口返回截图/日志
@@ -0,0 +1,162 @@
# 访客无鉴权策略验证-生产操作手册
## 1. 文档目的
本手册用于生产环境执行以下验证并留痕:
- 在**无鉴权模式**下调用访客相关接口,确认是否存在放开风险。
- 验证“黄平(访客)访问蒙海文(被访人)”是否触发访客楼层策略。
- 输出可审计报告(JSON)用于归档与发布。
本手册基于已确认信息:
- 被访人(蒙海文)`personId=964454497399468032`
- 访客(黄平)`personId=1102270499947507712`
- 租户 `businessId=2524639890ba4f2cba9ba1a4eeaa4015`
---
## 2. 目录与交付件
本发布包目录:
- `docs/testing/release-visitor-noauth-verify/访客无鉴权策略验证-生产操作手册.md`
- `docs/testing/release-visitor-noauth-verify/黄平访客ID手工查询.sql`
执行脚本(仓库已有,已按无鉴权流程更新):
- `maven-cw-elevator-application/tools/visitor_floor_verification/scripts/quick_verify_visitor_floor_policy.py`
---
## 3. 验证范围
本次仅验证以下调用链:
1. `POST /component/person/detail`
2. `POST /elevator/person/add/visitor`
3. `POST /elevator/passRule/image`
请求模式:
- `noauth-probe`(不传 Authorization/loginid/platformuserid/applicationid
- 可选保留 `businessid` 头:`--probe-with-businessid`
---
## 4. 前置条件
### 4.1 运行环境
- 可访问生产网络的 Linux 主机
- Python 3.8+
- 已拉取本仓库代码
### 4.2 依赖安装
```bash
cd maven-cw-elevator-application/tools/visitor_floor_verification
python3 -m pip install -r requirements.txt
```
---
## 5. 参数基线
建议使用以下固定参数:
- `org-base-url``http://10.0.22.207:8089`(按现场网关/portal入口可调整)
- `elevator-base-url``http://10.0.22.207:16112`
- `business-id``2524639890ba4f2cba9ba1a4eeaa4015`
- `meng-person-id``964454497399468032`
- `visitor-person-id``1102270499947507712`
说明:
- 当前脚本内置默认 `--meng-person-id=964454497399468032`,可不显式传参。
---
## 6. 标准执行命令
```bash
python3 maven-cw-elevator-application/tools/visitor_floor_verification/scripts/quick_verify_visitor_floor_policy.py \
--mode noauth-probe \
--org-base-url "http://10.0.22.207:8089" \
--elevator-base-url "http://10.0.22.207:16112" \
--business-id "2524639890ba4f2cba9ba1a4eeaa4015" \
--visitor-person-id "1102270499947507712" \
--probe-with-businessid
```
---
## 7. 输出与结果判定
脚本终端会输出:
- `mode`
- `grade`
- `summary`
- `report`(报告文件路径)
- `add_visitor_status/code`
- `passrule_image_status/code`
报告文件输出目录:
- `maven-cw-elevator-application/tools/visitor_floor_verification/report/quick-verify-<timestamp>.json`
### 7.1 关键判定规则
#### A. 无鉴权风险判定(noauth-probe
- `grade=high_risk``add/visitor` 在无鉴权下业务成功,判定高风险放开。
- `grade=expected_block`:返回 401/403,判定符合安全预期。
- `grade=needs_review`:非拦截但未成功,需人工复核网关策略。
#### B. 策略触发判定
-`add/visitor` 成功,且 `passRule/image` 回读到楼层数据,判定策略触发成功。
-`add/visitor` 返回 `76260532`,表示策略求交为空(策略生效但无可放行楼层)。
---
## 8. 黄平访客ID手工复核
可执行以下命令打印 SQL 模板:
```bash
python3 maven-cw-elevator-application/tools/visitor_floor_verification/scripts/quick_verify_visitor_floor_policy.py \
--print-visitor-sql-only \
--org-base-url "http://10.0.22.207:8089" \
--elevator-base-url "http://10.0.22.207:16112" \
--visitor-person-id "dummy"
```
或直接使用本包 SQL 文件:
- `docs/testing/release-visitor-noauth-verify/黄平访客ID手工查询.sql`
---
## 9. 发布归档建议
建议将以下文件打包归档:
1. 本操作手册
2. SQL 文件
3. 实际执行命令记录
4. `quick-verify-<timestamp>.json` 报告
5. 关键日志截图(含执行时间与业务码)
建议包名:
- `visitor-noauth-verify-<yyyyMMdd-HHmm>.zip`
---
## 10. 风险提示
- 本流程为生产探测,务必在低峰窗口执行。
- 无鉴权探测若成功,属于安全风险项,应立即同步网关/服务鉴权负责人处理。
- 所有返回结果以现场实际响应为准,需保留原始响应证据。
@@ -0,0 +1,20 @@
-- 访客:黄平(手机号 13926442944)手工查询 SQL
-- 场景:生产环境复核/确认访客 person_id
-- 已知租户:2524639890ba4f2cba9ba1a4eeaa4015
-- 已确认库表:component-organization.cw_is_person
SELECT
person_id,
name,
mobile,
business_id,
labels,
deleted,
create_time,
update_time
FROM `component-organization`.`cw_is_person`
WHERE business_id = '2524639890ba4f2cba9ba1a4eeaa4015'
AND name = '黄平'
AND mobile = '13926442944'
ORDER BY update_time DESC;
@@ -0,0 +1,117 @@
# 租户访客默认楼层(广发及后续租户定制)与「不影响其他公司」的边界说明
## 1. 目标表述
| 诉求 | 含义 |
|------|------|
| **定制** | 某租户希望:访客在 **不传 `floorIds`** 时,仅开通 **接待层等默认楼层**(与员工本人多层权限区分)。 |
| **不影响未定义公司** | 未启用该能力的租户 / 机构,行为与改造前一致:**不因他人策略误伤**。 |
实现落点在本仓库:**`PersonRuleServiceImpl#addVisitor`** + 表 **`tenant_visitor_floor_policy`**(详见 `visitor-registration-business-flow.md`)。
---
## 2. 当前实现下的真实隔离粒度(必读)
### 2.1 策略生效键:**`business_id`(机构/租户 ID**
- DAO**`TenantVisitorFloorPolicyDao#selectEnabledTenantDefault(businessId)`**
- SQL(节选):`WHERE business_id = ? AND enabled = 1 AND policy_type = 'INTERSECT_ALLOWLIST' AND (building_id IS NULL OR building_id = '')`
- **含义**:一行策略绑定的是 **Cloudwalk 上下文里的 `companyId`(即 Header `businessid`**,不是单个「公司名称字符串」,也不是单个部门 `org_id`
### 2.2 「未定义」租户的行为 — **不受影响**
```mermaid
flowchart LR
subgraph T1["租户 A:库中无策略行"]
A1[addVisitor floorIds 空]
A2[detail 取 host floorList]
A3[selectEnabledTenantDefault → null]
A4[effectiveFloors = hostFloors 全集]
A1 --> A2 --> A3 --> A4
end
subgraph T2["租户 B:有启用策略"]
B1[detail 取 host floorList]
B2[与 allow_zone_ids 求交]
B1 --> B2
end
```
- **无策略行**或 **enabled≠1**:代码分支 **不执行求交**,访客楼层等同于 **被访人 `floorList`**(在「不传 floorIds」前提下)。
**其他未配置策略的 `business_id`**:逻辑 **不变**,满足「未定义则不收紧」。
### 2.3 「广发定制」与同一 `business_id` 下其他部门 — **当前同属租户级策略**
-**星河湾中心**与 **广发基金**等业务共用一个 **`business_id`**(现场组织库 `cw_is_organization.BUSINESS_ID` 相同),则 **库中一条租户默认策略会对该 ID 下全部主体生效**,**无法**仅靠配置表做到「只收紧广发公司、不收紧同租户下其他公司」。
- **产品级隔离选项(需实施选型,超出当前表结构默认能力)**:
- **拆租户**:广发使用 **独立 `business_id`**(独立机构树),策略只插入该行;或
- **演进能力**:使用/扩展 **`building_id`** 维度的策略行(表已预留列,需扩展 Mapper 查询与产品规则);或
- **调用方传 `floorIds`**:由 BFF 按公司算出楼层,电梯不再依赖默认求交。
---
## 3. 业务流程图(有 / 无策略)
```mermaid
flowchart TD
Start([POST /elevator/person/add/visitor]) --> Empty{floorIds 空?}
Empty -- 否 --> UseIn[使用传入 floorIds]
Empty -- 是 --> Det[PersonService.detail 被访人 personId]
Det --> HF{floorList 非空?}
HF -- 否 --> E31[76260531]
HF -- 是 --> Pol{存在启用租户默认策略且 allow 非空?}
Pol -- 否 --> UseIn2[effectiveFloors = floorList]
Pol -- 是 --> Xsect[floorList ∩ allow_zone_ids]
Xsect --> Xe{交集非空?}
Xe -- 否 --> E32[76260532]
Xe -- 是 --> UseIn3[effectiveFloors = 交集]
UseIn --> Zone[首层→楼栋→imageStoreId]
UseIn2 --> Zone
UseIn3 --> Zone
Zone --> IRR[写 image_rule_ref personId=visitorId]
IRR --> Bind[图库 batchBind visitorId]
Bind --> OK([成功])
```
---
## 4. 时序图(不传 floorIds + 有策略)
```mermaid
sequenceDiagram
participant Caller as 调用方/BFF
participant API as AcsPersonController
participant PR as PersonRuleServiceImpl
participant PS as PersonService 组件
participant Pol as TenantVisitorFloorPolicyDao
participant Ir as ImageRuleRefDao
participant IS as ImageStorePersonService
Caller->>API: visitorId, personId(被访人), floorIds=[]
API->>PR: addVisitor
PR->>PS: detail(personId, businessId)
PS-->>PR: PersonResult.floorList
PR->>Pol: selectEnabledTenantDefault(businessId)
Pol-->>PR: allow_zone_ids JSON
Note over PR: effectiveFloors = intersect(floorList, allow)
PR->>Ir: insertList 每层默认规则 visitorId
PR->>IS: batchBind(visitorId, 访期)
IS-->>PR: ok
PR-->>API: success
```
---
## 5. 与测试矩阵的关系
- **自动化快照**按 **`business_id`** 拉策略与人员;若需验证「无策略租户」,使用 **第二 `business_id`** 套件或 **空策略库**
- **每部门 10 名员工**:验证「同一策略下不同被访人 floorList」与求交结果多样性;**不**等价于「按公司隔离策略」。
---
## 6. 文档索引
- 租户 / 组织 / 人员 / 访客 ER、表关系与用例:`docs/architecture/租户组织人员访客-数据模型与用例.md`
- 楼层与 API 字段:`docs/testing/visitor-registration-business-flow.md`
- 服务层逐步说明:`cw-elevator-application-service/docs/08-visitor-registration-and-elevator-auth.md`
- 测试方案:`docs/testing/visitor-registration-floor-validation.md`
@@ -0,0 +1,123 @@
# 访客注册与派梯:被访人、访客与楼层 — 源码级业务流程
> 本文与 `**cw-elevator-application-service/docs/08-visitor-registration-and-elevator-auth.md**` 互补:08 偏「接口步骤清单」,本文强调 **被访人 / 访客 / 楼层** 三者关系与 **类方法落点**。电梯应用不负责完整「访客档案登记 UI」,但 `**add/visitor` 显式依赖两条人员主键**。
---
## 1. 术语(避免混用)
| 称呼 | HTTP / 参数字段 | 含义 | 数据哪里来 |
| ----------- | ----------------------------- | ----------------------------------------------------- | -------------------------------------------- |
| **访客** | `visitorId` | 已在**平台人员体系**存在的档案 ID(登记/同步发生在访客业务或 CWOS 组件侧) | 组织库 `cw_is_person` 等;常打 **「访客」标签** |
| **被访人(员工)** | `personId` | **接待访客的员工**,用于在 **未传 `floorIds`** 时拉取其可派梯楼层 | 同库在职人员,与 `cw_is_person_organization_ref` 挂组织 |
| **生效楼层** | 内部 `param.floorIds`(可能由服务端改写) | 最终写入 `**image_rule_ref`**、绑定图库的 **楼层 zoneId 列表**(雪花串) | 见 §3 |
**易错点**`personId` **不是**访客 ID,而是**被访员工** ID。
---
## 2. 端到端角色关系(产品语义)
```mermaid
flowchart LR
subgraph 登记域["登记域(多在外部/组件)"]
V["访客档案 visitorId"]
H["员工档案 personId\n被访人"]
end
subgraph 电梯域["电梯应用"]
A["POST /elevator/person/add/visitor"]
R["image_rule_ref\npersonId=visitorId"]
end
H -->|Feign detail 取 floorList| A
V --> A
A --> R
```
- **访客要访问的是员工(被访人)** → API 上体现为:用 `**personId`** 定位被访人,用 `**visitorId**` 定位访客档案。
- **电梯侧写规则**:按 `**visitorId`** 在各区写入规则引用(`ImageRuleRefAddDto.personId = visitorId`),**不是**写在被访人名下。
---
## 3. 楼层从哪里来(核心业务逻辑)
实现类:`**PersonRuleServiceImpl#addVisitor`**`person/impl/PersonRuleServiceImpl.java`)。
### 3.1 调用方 **传入非空 `floorIds`**
- **跳过**被访人详情与租户策略整段。
- **直接使用**调用方给出的楼层列表作为 `**effectiveFloors`**(需非空,否则 `76260531`)。
- **责任**:楼层合法性、是否仍应受租户策略约束,由调用方或上游 BFF 保证(产品文档另有说明)。
### 3.2 调用方 **未传 / 空 `floorIds`(常见访客路径)**
1. `**PersonService#detail`**Feign,组件 `**/component/person/detail**`
- 入参:`PersonDetailParam.id = param.getPersonId()`**被访人**)、`businessId = context.getCompany().getCompanyId()`
- 出参:`**PersonResult.getFloorList()`** → 记为 `**hostFloors**`(字符串列表,元素为电梯域认可的 **zoneId**,雪花形态,与 `**image_rule_ref.zone_id`** 一致)。
2. **失败分支**
- detail 失败 / 无数据 / `**hostFloors` 为空** → `**76260531`**(无可用楼层依据)。
3. **租户默认策略(可选收窄)**
- `**TenantVisitorFloorPolicyDao#selectEnabledTenantDefault(companyId)`** → 表 `**tenant_visitor_floor_policy**`
- 条件:`enabled=1``policy_type=INTERSECT_ALLOWLIST`、租户级默认(`building_id` 空)。
- `**allow_zone_ids**`JSON 字符串数组,解析为 `**allowSet**`
- **生效楼层**`**effectiveFloors = hostFloors 按原顺序过滤,仅保留 ∈ allowSet`**`intersectPreserveHostOrder`)。
- 若交集 **为空**`**76260532`**(与租户允许楼层无交集)。
4. **首层 → 楼栋 → 图库**
-`**effectiveFloors.get(0)`**`**ZoneService#page**``**ZoneResult**`,再 `**deviceImageStoreDao.getByBuildingId(首层 parentId)**``**imageStoreId**`
5. **逐层写规则 + 绑访客图库**
- 对每个 floorId`**imageRuleRefDao.getDefaultByZoneId`** → 组装 `**ImageRuleRefAddDto**``**personId = param.getVisitorId()**`(访客)。
- `**imageStorePersonService.batchBind**`:把 **访客** 绑到该楼栋图库,访期 `**begVisitorTime` / `endVisitorTime`**。
- `**updateGroupPersonRef**`:同步组人员引用。
### 3.3 小结公式
- **无显式 floorIds 时**
\text{effectiveFloors} = \begin{cases}
\text{hostFloors} & \text{无启用策略或 allow 为空}
\text{hostFloors} \cap \text{allowzoneids} & \text{策略启用且 allow 非空}
\end{cases}
- **交集为空** → `**76260532`****hostFloors 为空** → `**76260531`**。
---
## 4. 与「访客注册」一词的边界
| 步骤 | 是否在电梯仓实现 |
| ------------------------------------ | ------------------ |
| 访客姓名/证件/人脸建档、预约单 | **否**(外部系统 / 组件) |
| 拿到 `**visitorId` + 被访员工 `personId`** | 前置条件 |
| **派梯授权**(写规则 + 绑图库) | **是**`addVisitor` |
因此:**完整「访客注册」业务** = 外部登记 + **本接口授权**;本文楼层逻辑仅覆盖授权链。
---
## 5. 关键源码索引
| 步骤 | 类 / 方法 |
| ------- | ---------------------------------------------------------- |
| HTTP 入口 | `AcsPersonController``/elevator/person/add/visitor` |
| 聚合逻辑 | `PersonRuleServiceImpl#addVisitor` |
| 被访人楼层 | `PersonService#detail``PersonResult#getFloorList` |
| 租户策略 | `TenantVisitorFloorPolicyDao#selectEnabledTenantDefault` |
| 策略表 | `tenant_visitor_floor_policy` |
| 规则落库 | `ImageRuleRefDao#getDefaultByZoneId` / `insertList` |
| 图库 | `ImageStorePersonService#batchBind``updateGroupPersonRef` |
---
## 6. 测试数据在建模上的要求
- **每条用例**应能指向:**组织 / 部门**、**一名被访员工(host**、**一名访客(visitor**。
- 导出脚本从 DB 解析:**员工** = 部门下在职人员;**访客** = 带「访客」标签的人员池,按套件 `**business_id`** 过滤,与用例 **轮询配对**(避免同源语义缺失)。
- 详见 `**tools/visitor_floor_verification/config/test_matrix.json`** 与导出快照 `**host_employee` / `visitor_for_api**` 字段。
@@ -0,0 +1,151 @@
# 访客注册(派梯开通)与可达楼层验证 — 测试方案与计划
## 0. 关联文档
- **租户 / 组织 / 人员 / 访客 ER 与表关系**:`docs/architecture/租户组织人员访客-数据模型与用例.md`
- **被访人 / 访客 / 楼层逻辑(源码走查)**:`docs/testing/visitor-registration-business-flow.md`
- **服务层逐步说明与活动图(与 08 同谱系)**:`maven-cw-elevator-application/cw-elevator-application-service/docs/08-visitor-registration-and-elevator-auth.md`
- **租户定制默认楼层 vs 未定义租户隔离边界(流程图/时序图)**:`docs/testing/tenant-visitor-default-floor-isolation.md`
### 0.1 数据模型(测试矩阵 v3)
- **`export_settings.employees_per_department`**:每部门导出员工人数(默认 **10**),写入快照 **`host_employees`**。
- **`visitor_resolution.pool_limit`**:访客标签池上限(与 **`visitor_pool_limit`** 取大)。
- **`personId`(被访人)**:**员工**;导出按部门取最多 N 人写入 **`host_employees[]`**N 见矩阵 `employees_per_department`)。
- **`visitorId`(访客)**:**访客档案**(「访客」标签);导出为 **每名员工** 分配 **`visitor_for_api`**(全局槽位轮询);`test_matrix.json` 中部门级 **`visitor_person_id`** 可令该部门全部员工共用同一访客。
---
## 1. 背景与范围
### 1.1 业务链路(电梯应用)
- **接口**`POST /elevator/person/add/visitor`,请求体 `floorIds` **为空**时,服务内部:
1. Feign 调用组织组件 `**/component/person/detail`**,取被访人 `**floorList`**(雪花 `zone_id` 字符串列表)。
2. 查询 `**tenant_visitor_floor_policy**`(租户默认策略,`business_id` = 登录上下文机构)。
3. 策略为 `**INTERSECT_ALLOWLIST**` 且启用时:**生效楼层 = `floorList ∩ allow_zone_ids`**(顺序保留被访人顺序)。
4. 交集为空 → 业务码 `**76260532**`;否则按生效楼层写 `**image_rule_ref**` 并绑图库。
- **回读验收**`POST /elevator/passRule/image``personId` = 访客 ID,从 `**data[]`** 读取 `zoneId` / `zoneName`
### 1.2 当前库内策略现状(重要)
- `**tenant_visitor_floor_policy`** 按 `**business_id**` 维度生效;现场 `**cw-elevator-application**` 中为租户 `**2524639890ba4f2cba9ba1a4eeaa4015**`(与组织库 `**cw_is_organization.BUSINESS_ID**` 一致)配置了广发接待层 **28F** 对应 `**zone_id`**。
- **含义**:凡使用该 `**business_id`** 登录的星河湾/星中心主体(含非「广发」名字的部门),在未显式传 `floorIds` 时**同样**适用「与 allowlist 求交」——验收与风险评估时需写明该前提;若产品上要「仅广发主体生效」,需另行产品设计(如楼栋/机构维度策略扩展),**不在本脚本假定范围内**。
### 1.3 现场组织库事实(`component-organization`
- `**BUSINESS_ID = 2524639890ba4f2cba9ba1a4eeaa4015`**:根机构 `**星河湾中心`**,其下含 **[28-38F]广发基金管理有限公司** 及其 **9 个子部门**(合计 **10** 个节点:1 公司 + 9 部门),为本方案 **「广发基金套件」** 覆盖对象。
- `**BUSINESS_ID = 9f19a307b3ea4854bf2d7dafe69649c9`**:仅 `**默认根节点`**;现场 `**cw_is_person**` 侧未见该租户人员——**联调用例若依赖在职被访人**,可能无法执行;保留为「策略缺失对照」说明项。
- **命名**:文中「星河湾中心」为现场 **`cw_is_organization`** 根节点 **`NAME`** 示例;口语「星河湾集团」等与库内节点全称不一定一一对应,请以现场 **`NAME`/`ID`** 为准。租户 / 组织 / 人员 / 访客 ER 与术语见 [`docs/architecture/租户组织人员访客-数据模型与用例.md`](../architecture/租户组织人员访客-数据模型与用例.md)。
---
## 2. 测试层级定义
| 层级 | 名称 | 手段 | 产出 |
| ------ | ------ | --------------------------------------------------------- | ----------------------- |
| **L0** | 数据导出 | MySQL 读组织、策略、样例人员 | `catalog_snapshot.json` |
| **L1** | 静态一致性 | 校验导出 JSON 内 suite 与策略字段口径 | 控制台 / 报告一节 |
| **L2** | 联机楼层验收 | 调用 `**add/visitor`**`floorIds=[]`+ `**passRule/image`** | Markdown 报告 |
| **L3** | 可选扩展 | 对接组件 `**/component/person/detail`** 预计算交集(需另行网关/脚本权限) | 未默认启用 |
说明:**被访人 `floorList` 不可仅从电梯库推导**(以组件为准),故 **L2** 以「开通结果 + 回读楼层」为权威验收;若需预知交集,须 **L3** 或人工查组件。
---
## 3. 测试套件与用例矩阵(摘要)
### 3.1 `guangfa_fund_10` — 广发基金管理有限公司 subtree(10)
| # | 组织 ID(节选) | 名称 |
| ---- | ---------------------------------------- | --------------------------- |
| 1 | `488b8ad049bb43408a6fbcc50bcb89ac` | [28-38F]广发基金管理有限公司 |
| 210 | 其子部门(含 `32F-广发外包``信息技术部``公司领导` 等共 9 个) | 见 `config/test_matrix.json` |
**每条用例**:同一租户上下文(Header `businessid`)下,指定 **被访人 `personId`**(从该部门导出 **1 名在职人员**)、**访客 `personId`**(测试账号)、访客有效期;不传 `**floorIds**`
**期望类型(L2**
- **成功路径**`add/visitor` 返回成功码;`passRule/image``**zoneName` 均落在策略允许集合对应的楼层展示名**(现场允清单示例:**28F**,正则可在脚本中用 `--allowed-zone-name-regex` 约束)。
- **失败路径**:若组件返回的被访人 `**floorList`** 与 `**allow_zone_ids`** 无交集 → `**76260532**`,记为 **EXPECTED_FAIL**,断言业务码而非楼层列表。
### 3.2 `xinghewan_star_center` — 星河湾 / 星中心代表部门(非广发字样)
`**星河湾中心`** 根下选取包含 **「星河湾」「星中心」** 语义的部门若干(示例:**星河湾集团总部**、**星中心物管公司**),每部门 **1** 名被访人样例。
**期望**:与 **3.1** 相同租户策略下,仍应按「求交」结果开通或失败(不得以「非广发」跳过策略)。
### 3.3 `tenant_secondary` — 第二 `BUSINESS_ID`(对照)
- **目的**:无 `**tenant_visitor_floor_policy`** 行时,行为应与「未收窄」一致(以组件 `**floorList`** 为准);现场若无人员,标记 **SKIP**
---
## 4. 测试数据约定
| 数据项 | 来源 | 说明 |
| -------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- |
| `business_id` | Header `**businessid`** | 与 DB `**tenant_visitor_floor_policy.business_id`**、组织 `**BUSINESS_ID**` 一致 |
| 被访人 `personId` | MySQL `cw_is_person` + `cw_is_person_organization_ref` | 导出脚本按 `**ORG_ID**`**每部门 1 人** |
| 访客 `personId` | 测试环境固定账号 | **环境变量 `VISITOR_TEST_PERSON_ID`**(或脚本参数);勿用生产真实访客随意写入 |
| 访客有效期 | `begVisitorTime` / `endVisitorTime` | 毫秒时间戳;避免重叠冲突可调脚本 `--window-days` |
| 允许楼层参照 | `tenant_visitor_floor_policy.allow_zone_ids` + `cw_is_area``cwos_portal` | 展示名校验用 `**zoneName**`(如 **28F**) |
详细字段级快照见仓库 `**maven-cw-elevator-application/tools/visitor_floor_verification/data/`**(导出生成)。
---
## 5. 准入 / 准出标准
**准入**
- 电梯服务可访问(`BASE_URL`);网关鉴权头 `**ELEVATOR_HEADER_*`** 已配置;
- MySQL 可从运行脚本环境访问(导出阶段);
- 已书面确认:**租户级策略** 对全体使用该 `business_id` 的主体生效。
**准出**
- `catalog_snapshot.json` 生成成功且含三类套件定义;
- L2 报告:**通过率 / SKIP / FAIL** 可区分;失败附 `**code`** 与响应摘要;
-`**EXPECTED_FAIL`**(交集为空)类用例,业务码符合 `**76260532**`
---
## 6. 执行顺序建议
1. `python scripts/export_catalog.py` → 刷新快照(依赖 DB)。
2. 复核快照内 `**sample_host_person_id**` 是否为在职账号。
3. `python scripts/run_visitor_floor_suite.py --phase report`(仅导出校验)或 `**--phase live**`(联机)。
4. 归档报告 `**report/visitor-floor-suite-<timestamp>.md**`
---
## 7. 仓库内工件路径(索引)
| 工件 | 路径 |
| ----------------------------- | ---------------------------------------------------------------------------------------- |
| 测试方案与计划(本文档) | `docs/testing/visitor-registration-floor-validation.md` |
| 套件矩阵(广发10 + 星河湾/星中心 + 第二租户占位) | `maven-cw-elevator-application/tools/visitor_floor_verification/config/test_matrix.json` |
| **导出快照(建议纳入变更或由内网生成)** | `.../tools/visitor_floor_verification/data/catalog_snapshot.json` |
| 导出脚本 | `.../scripts/export_catalog.py` |
| 报告 / 联机执行脚本 | `.../scripts/run_visitor_floor_suite.py` |
| 报告输出目录 | `.../tools/visitor_floor_verification/report/` |
策略初始化 SQL(广发 28F allowlist)见 `docs/sql/tenant_visitor_floor_policy_init_guangfa_fund.sql`
---
## 8. 风险与限制
- **重复开通**:同一访客短期内多次 `add/visitor` 可能叠加规则或触发远端校验失败;建议使用 **专用测试访客** 或拉长有效期区间。
- **环境与生产**:口令与 URL **勿提交仓库**;快照 JSON 若含真实 ID,纳入内部介质分发策略。
- **策略维度**:当前库表 **无「仅广发」机构字段**;跨部门验收等价验证「同一租户策略」。
@@ -0,0 +1,307 @@
# 广发基金访客被访楼层接口生产验证操作文档
## 1. 目标与范围
本文用于生产环境验证以下事项:
- 广发基金租户下,访客开通接口在不传 `floorIds` 时,是否按被访人楼层与租户策略进行处理。
- 验证对象固定为广发基金员工 **蒙海文** 的关联信息(`personId``businessId``floorList`)。
- 输出可审计的执行记录,包含输入参数、返回结果、结论与留痕。
说明:本操作仅做接口调用和数据核验,不修改生产配置、不执行策略变更 SQL。
## 2. 前置条件
### 2.1 必备信息
- 电梯服务地址:`ELEVATOR_BASE_URL`(示例:`http://<host>:16112`)。
- 组织服务地址:`ORG_BASE_URL`(示例:`http://<host>:17016` 或网关地址)。
- 广发基金租户 `businessId``2524639890ba4f2cba9ba1a4eeaa4015`
- 测试访客 `visitorId`(专用测试账号,避免使用真实业务访客)。
- 鉴权头(按现场网关要求):`authorization``loginid``platformuserid``applicationid`
### 2.2 风险提示
- 生产环境调用会产生真实接口访问日志,请在低峰时段执行。
- `add/visitor` 会写入访客通行规则,建议只使用测试访客并设置短期有效期。
- 若现场策略已变更,需先复核 `tenant_visitor_floor_policy` 再执行。
## 3. 蒙海文关联信息确认(必做)
先确认“蒙海文”在组织服务中的关键关联信息,作为后续请求入参依据。
### 3.1 确认项清单
- 员工姓名:蒙海文
- 员工 `personId``<MENG_HAI_WEN_PERSON_ID>`
- 员工 `businessId``2524639890ba4f2cba9ba1a4eeaa4015`
- 员工 `floorList``["..."]`(至少 1 个楼层 ID
### 3.2 被访人详情接口请求模板(输入参数)
接口:`POST /component/person/detail`
请求头模板:
```text
Content-Type: application/json
businessid: 2524639890ba4f2cba9ba1a4eeaa4015
authorization: Bearer <TOKEN>
loginid: <LOGIN_ID>
platformuserid: <PLATFORM_USER_ID>
applicationid: <APPLICATION_ID>
```
请求体模板:
```json
{
"id": "<MENG_HAI_WEN_PERSON_ID>",
"businessId": "2524639890ba4f2cba9ba1a4eeaa4015"
}
```
`curl` 示例:
```bash
curl -sS -X POST "${ORG_BASE_URL}/component/person/detail" \
-H "Content-Type: application/json" \
-H "businessid: 2524639890ba4f2cba9ba1a4eeaa4015" \
-H "authorization: Bearer <TOKEN>" \
-H "loginid: <LOGIN_ID>" \
-H "platformuserid: <PLATFORM_USER_ID>" \
-H "applicationid: <APPLICATION_ID>" \
-d '{
"id":"<MENG_HAI_WEN_PERSON_ID>",
"businessId":"2524639890ba4f2cba9ba1a4eeaa4015"
}'
```
验收要点:
- `data.name` 为“蒙海文”。
- `data.businessId``2524639890ba4f2cba9ba1a4eeaa4015`
- `data.floorList` 非空并记录原始值。
## 4. 租户策略基线确认(建议)
用于确认广发基金策略是否启用,避免误判。
参考策略脚本:`docs/sql/tenant_visitor_floor_policy_init_guangfa_fund.sql`
关键期望:
- `business_id='2524639890ba4f2cba9ba1a4eeaa4015'`
- `policy_type='INTERSECT_ALLOWLIST'`
- `enabled=1`
- `allow_zone_ids``605560545117995008`28F
示例查询(电梯库):
```sql
SELECT business_id, policy_type, allow_zone_ids, enabled, policy_version, updated_at
FROM tenant_visitor_floor_policy
WHERE business_id = '2524639890ba4f2cba9ba1a4eeaa4015';
```
## 5. 访客开通接口验证(核心)
### 5.1 请求信息(输入参数)
接口:`POST /elevator/person/add/visitor`
请求头:与第 3 节一致,`businessid` 固定为 `2524639890ba4f2cba9ba1a4eeaa4015`
请求体模板(验证“自动按被访人楼层处理”时,`floorIds` 置空或不传):
```json
{
"visitorId": "<TEST_VISITOR_PERSON_ID>",
"personId": "<MENG_HAI_WEN_PERSON_ID>",
"begVisitorTime": <BEGIN_TS_MS>,
"endVisitorTime": <END_TS_MS>,
"floorIds": []
}
```
时间戳示例(毫秒):
- `begVisitorTime`: 当前时间
- `endVisitorTime`: 当前时间 + 1 天
`curl` 示例:
```bash
curl -sS -X POST "${ELEVATOR_BASE_URL}/elevator/person/add/visitor" \
-H "Content-Type: application/json" \
-H "businessid: 2524639890ba4f2cba9ba1a4eeaa4015" \
-H "authorization: Bearer <TOKEN>" \
-H "loginid: <LOGIN_ID>" \
-H "platformuserid: <PLATFORM_USER_ID>" \
-H "applicationid: <APPLICATION_ID>" \
-d '{
"visitorId":"<TEST_VISITOR_PERSON_ID>",
"personId":"<MENG_HAI_WEN_PERSON_ID>",
"begVisitorTime":<BEGIN_TS_MS>,
"endVisitorTime":<END_TS_MS>,
"floorIds":[]
}'
```
期望:
- 返回成功码(常见 `code=0``success=true`,以现场协议为准)。
- 若返回 `76260532`,表示求交后无可开通楼层,需按“预期失败”流程记录。
## 6. 回读访客楼层权限验证
### 6.1 回读接口请求模板(输入参数)
接口:`POST /elevator/passRule/image`
请求体模板:
```json
{
"personId": "<TEST_VISITOR_PERSON_ID>",
"businessId": "2524639890ba4f2cba9ba1a4eeaa4015",
"imageStoreIds": [],
"includeOrganizations": [],
"includeLabels": []
}
```
`curl` 示例:
```bash
curl -sS -X POST "${ELEVATOR_BASE_URL}/elevator/passRule/image" \
-H "Content-Type: application/json" \
-H "businessid: 2524639890ba4f2cba9ba1a4eeaa4015" \
-H "authorization: Bearer <TOKEN>" \
-H "loginid: <LOGIN_ID>" \
-H "platformuserid: <PLATFORM_USER_ID>" \
-H "applicationid: <APPLICATION_ID>" \
-d '{
"personId":"<TEST_VISITOR_PERSON_ID>",
"businessId":"2524639890ba4f2cba9ba1a4eeaa4015",
"imageStoreIds":[],
"includeOrganizations":[],
"includeLabels":[]
}'
```
### 6.2 判定规则
- 成功判定:
- `add/visitor` 成功。
- `passRule/image` 返回 `data[]` 非空。
- 返回楼层(`zoneId` / `zoneName`)符合当前租户策略和被访人 `floorList` 的交集预期。
- 预期失败判定:
- `add/visitor` 返回 `76260532`(交集为空),记录为预期失败,不记为系统缺陷。
- 异常失败判定:
- 鉴权失败(401/403)。
- 参数格式错误(400)。
- 下游服务不可达、超时、5xx。
## 7. 标准执行顺序
1. 记录执行人、时间窗、目标环境与业务单号。
2.`/component/person/detail`,确认并记录蒙海文信息。
3. (建议)执行策略查询,确认 allowlist 状态。
4.`/elevator/person/add/visitor` 开通测试访客。
5.`/elevator/passRule/image` 回读访客楼层。
6. 依据第 6.2 节判定并形成结论。
## 8. 现场结论记录模板(复制填写)
### 8.1 基本信息
- 执行时间:
- 执行环境:
- 执行人:
- 工单/需求编号:
### 8.2 蒙海文关联信息核对结果
- 姓名:蒙海文
- `personId`
- `businessId`
- `floorList`
- 核对结论(通过/不通过):
### 8.3 接口调用记录
1) `/component/person/detail`
- 请求参数摘要:
- 响应摘要:
- 结果判定:
2) `/elevator/person/add/visitor`
- 请求参数摘要(含 `visitorId``personId`、时间窗):
- 响应摘要(含业务码):
- 结果判定:
3) `/elevator/passRule/image`
- 请求参数摘要:
- 响应摘要(含 `zoneId/zoneName`):
- 结果判定:
### 8.4 最终结论
- 结论:通过 / 预期失败 / 失败
- 失败原因分类:
- 后续处理建议:
## 9. 附件留痕要求
至少保留以下附件(脱敏后归档):
- 三次接口请求与响应(建议 JSON 文件各 1 份)。
- 关键日志截图(包含时间戳与业务码)。
- 本文档第 8 节填写后的结果页。
建议命名:`gf-visitor-floor-verify-<yyyyMMdd-HHmm>-<executor>.zip`
## 10. 方案B:Python 脚本一键模拟(完整实现)
仓库已提供可执行脚本:
- `maven-cw-elevator-application/tools/visitor_floor_verification/scripts/simulate_gf_visitor_flow.py`
### 10.1 安装依赖
```bash
cd maven-cw-elevator-application/tools/visitor_floor_verification
python3 -m pip install -r requirements.txt
```
### 10.2 设置请求头环境变量
```bash
export ELEVATOR_HEADER_AUTHORIZATION='Bearer <TOKEN>'
export ELEVATOR_HEADER_LOGINID='<LOGIN_ID>'
export ELEVATOR_HEADER_PLATFORMUSERID='<PLATFORM_USER_ID>'
export ELEVATOR_HEADER_APPLICATIONID='<APPLICATION_ID>'
```
说明:`businessid` 由脚本参数 `--business-id` 自动注入,同时也会写入 `ELEVATOR_HEADER_BUSINESSID`
### 10.3 执行脚本
```bash
python3 scripts/simulate_gf_visitor_flow.py \
--org-base-url "http://<ORG_HOST>:<ORG_PORT>" \
--elevator-base-url "http://<ELEVATOR_HOST>:<ELEVATOR_PORT>" \
--meng-person-id "<MENG_HAI_WEN_PERSON_ID>" \
--visitor-person-id "<TEST_VISITOR_PERSON_ID>" \
--business-id "2524639890ba4f2cba9ba1a4eeaa4015" \
--window-hours 24 \
--strict-name-check
```
### 10.4 输出与判定
- 控制台会打印三步调用的关键摘要(详情 code、回读 data 条数、是否全通过)。
- 报告文件自动生成到:
- `maven-cw-elevator-application/tools/visitor_floor_verification/report/gf-visitor-sim-<timestamp>.json`
- 若脚本退出码为 `0` 表示检查通过;退出码为 `1` 表示存在未通过项,需查看报告里的 `checks``steps` 字段。
@@ -0,0 +1,140 @@
# 访客接口无鉴权调用评估与生产快测方案
## 1. 目标
- 基于生产日志评估“无鉴权调用访客接口”的真实边界。
- 给出生产可执行的快测方案,验证访客楼层策略是否生效。
- 通过脚本同时支持:
- `auth`:标准鉴权验证(正式验收路径)
- `noauth-probe`:无鉴权探测(安全风险判定,不作业务通过依据)
## 2. 日志证据与边界结论
日志来源:
- `maven-cw-elevator-application/logs/访客相关接口日志分析/日志分析/访客调用楼层放开接口清单.md`
- `maven-cw-elevator-application/logs/访客相关接口日志分析/日志分析/10.0.22.209/202604301713/logs/elevator-app.log`
关键证据:
- 文档中同时存在“JWT 调用”和“无鉴权(username)调用”样本。
- 但同批日志中的 `PersonRuleServiceImpl:196` 记录可见 `CloudwalkCallContext` 已包含:
- `company.companyId`
- `user.callerName`
- 部分请求带 `ext.value.authorization`JWT 场景)
边界判定:
1. 观察到的“无 Authorization header”不能直接等价为“外部匿名可裸调”。
2. 更可能是平台或网关已注入上下文后触发的内部调用路径。
3. 生产对外验证必须以 `auth` 模式为准。
4. `noauth-probe` 仅用于探测当前网关/应用是否放开了不应放开的入口。
## 3. 快测脚本与模式
脚本路径:
- `maven-cw-elevator-application/tools/visitor_floor_verification/scripts/quick_verify_visitor_floor_policy.py`
### 3.1 auth 模式(正式)
三步调用:
1. `POST /component/person/detail`
2. `POST /elevator/person/add/visitor`
3. `POST /elevator/passRule/image`
请求头采用 `ELEVATOR_HEADER_*`authorization/loginid/platformuserid/applicationid+ `businessid`
### 3.2 noauth-probe 模式(探测)
- 仅发送 `Content-Type`,可选附加 `businessid`
- 不发送 Authorization、loginid、platformuserid、applicationid。
- 输出状态码/业务码用于判定“是否存在风险放开”。
## 4. 结果分级规则
### 4.1 auth 模式
- 通过:
- 三步 HTTP 均成功返回;
- `add/visitor` 业务成功,或返回 `76260532`(交集为空,预期失败);
- `passRule/image` 返回可解析数据。
- 失败:
- HTTP 4xx/5xx、超时、响应不可解析;
- 关键业务码异常且不属于 `76260532`
### 4.2 noauth-probe 模式
- 预期拦截(正常):
- 返回 401/403,或明确鉴权失败业务码。
- 安全异常(高风险):
- 返回 2xx 且业务成功(特别是 `add/visitor` 成功)。
- 待排查:
- 返回 2xx 但业务失败且错误语义不清晰,需要结合网关策略判断。
## 5. 运行方式
先准备头信息(auth 模式):
```bash
cd maven-cw-elevator-application/tools/visitor_floor_verification
python3 -m pip install -r requirements.txt
export ELEVATOR_HEADER_AUTHORIZATION='Bearer <TOKEN>'
export ELEVATOR_HEADER_LOGINID='<LOGIN_ID>'
export ELEVATOR_HEADER_PLATFORMUSERID='<PLATFORM_USER_ID>'
export ELEVATOR_HEADER_APPLICATIONID='<APPLICATION_ID>'
```
也可使用模板文件:
- `maven-cw-elevator-application/tools/visitor_floor_verification/.env.quick_verify.example`
例如:
```bash
set -a
source .env.quick_verify
set +a
```
auth 模式(正式验收):
```bash
python3 scripts/quick_verify_visitor_floor_policy.py \
--mode auth \
--org-base-url "http://<ORG_HOST>:<ORG_PORT>" \
--elevator-base-url "http://<ELEVATOR_HOST>:<ELEVATOR_PORT>" \
--meng-person-id "<MENG_HAI_WEN_PERSON_ID>" \
--visitor-person-id "<TEST_VISITOR_PERSON_ID>" \
--business-id "2524639890ba4f2cba9ba1a4eeaa4015" \
--strict-name-check
```
noauth-probe 模式(可选一次):
```bash
python3 scripts/quick_verify_visitor_floor_policy.py \
--mode noauth-probe \
--org-base-url "http://<ORG_HOST>:<ORG_PORT>" \
--elevator-base-url "http://<ELEVATOR_HOST>:<ELEVATOR_PORT>" \
--meng-person-id "<MENG_HAI_WEN_PERSON_ID>" \
--visitor-person-id "<TEST_VISITOR_PERSON_ID>" \
--business-id "2524639890ba4f2cba9ba1a4eeaa4015" \
--probe-with-businessid
```
## 6. 报告与留痕
脚本输出:
- 控制台摘要(模式、三步状态、业务码、风险级别)
- 报告文件:`report/quick-verify-<timestamp>.json`
建议归档:
- 本次执行命令
- 报告 JSON
- 对应时段接口日志摘录
- 最终分级(通过 / 预期拦截 / 高风险)