Files
starRiverProperty/docs/build/cw-elevator-application-v2.0.6-SQL与代码一致性审核记录.md
反编译工作区 8b15445328 feat: add service config templates and extraction script
Former-commit-id: 1de24b7eb79676d1aba9d799a58c5a753290cf52
2026-05-01 19:38:01 +08:00

3.9 KiB
Raw Permalink Blame History

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=NULLenabled=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. 签字确认

角色 姓名 日期 备注
审核人 ____________ ____ ____
实施负责人 ____________ ____ ____
甲方确认(可选) ____________ ____ ____