Initial commit: reorganized source tree

- backend/: 13 Maven modules (cw-elevator-application, cloudwalk-cloud, intelligent-cwoscomponent, ninca-crk, etc.)
- frontend/: 4 Vue projects (elevator-front, cwos-portal, alarm-front, front_acs) + decompiled + scripts
- scripts/: build, test-env, tools (Docker Compose, service templates, API parity)
- docs/: AGENTS.md, superpowers specs, architecture docs
- .gitignore: standard Java/Maven exclusions

Moved from legacy maven-*/ root layout to backend/ organized structure.
This commit is contained in:
hpd840321
2026-05-09 09:00:12 +08:00
commit 7b2bd307f1
7260 changed files with 612980 additions and 0 deletions
@@ -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;