feat: 租户访客策略 SQL、访客邀约验证包、component-org 与发布脚本

- docs/sql: organization_* 与 tenant_* 访客楼层策略脚本
- docs/testing: 访客邀约页初始化验证、pack 脚本与 README(忽略 dist/__pycache__)
- maven-ninca-common-component-organization: CpImageStoreServiceImpl、starter、run-verify、releases 脚本与 javap 审计 JSON
- docs/superpowers: component-org 生产问题修复计划
- scripts/test-env/prepare-db.sh 更新

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
反编译工作区
2026-05-06 22:00:16 +08:00
parent 86cf41890e
commit 25db029859
24 changed files with 6016 additions and 27 deletions
+18 -11
View File
@@ -1,9 +1,23 @@
-- 租户访客默认楼层策略(电梯应用库)
-- 租户访客默认楼层策略(电梯应用库 cw-elevator-application
-- 设计说明:docs/business/租户访客默认楼层-数据库配置阶段技术设计.md
--
-- 本脚本会先 DROP 再 CREATE:删除现有 tenant_visitor_floor_policy 及全部历史数据,然后按 v2 后最终结构建空表。
-- 执行前请备份;若仅需 ALTER 升级旧表而不删数据,请改用 tenant_visitor_floor_policy_v2.sql(勿与本脚本混用)。
--
-- 连接方式任选其一:
-- mysql -h ... -u ... -p... cw-elevator-application < tenant_visitor_floor_policy.sql
-- 或在本文件中依赖下方 USE(手工客户端执行时)。
CREATE TABLE IF NOT EXISTS tenant_visitor_floor_policy (
SET NAMES utf8mb4;
USE `cw-elevator-application`;
DROP TABLE IF EXISTS tenant_visitor_floor_policy;
CREATE TABLE tenant_visitor_floor_policy (
id VARCHAR(32) NOT NULL COMMENT '主键',
business_id VARCHAR(64) NOT NULL COMMENT '机构/租户 ID',
business_id VARCHAR(64) NULL COMMENT 'DEPRECATED: 已废弃,以 org_id 为准',
org_id VARCHAR(32) NULL COMMENT '组织节点ID(cw_is_organization.ID)',
policy_type VARCHAR(32) NOT NULL DEFAULT 'INTERSECT_ALLOWLIST' COMMENT '策略类型',
allow_zone_ids TEXT NULL COMMENT 'JSON 数组,zoneId 列表',
building_id VARCHAR(64) NULL COMMENT '预留:楼栋维度;租户默认填 NULL',
@@ -15,13 +29,6 @@ CREATE TABLE IF NOT EXISTS tenant_visitor_floor_policy (
updated_by VARCHAR(64) NULL,
updated_at BIGINT NULL,
PRIMARY KEY (id),
UNIQUE KEY uk_biz_building (business_id, building_id),
UNIQUE KEY uk_org_building (org_id, building_id),
KEY idx_business_enabled (business_id, enabled)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='租户访客默认楼层策略(与组织 floorList 求交)';
-- 示例(实施时替换占位符后执行)
-- 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
-- (REPLACE(UUID(),'-',''), 'REPLACE_WITH_BUSINESS_ID', 'INTERSECT_ALLOWLIST',
-- '["REPLACE_ZONE_A","REPLACE_ZONE_B"]', NULL, 1, 1, '实施录入', UNIX_TIMESTAMP(NOW())*1000, UNIX_TIMESTAMP(NOW())*1000);