mirror of
https://github.com/hpd840321/starRiverProperty.git
synced 2026-06-09 08:20:31 +08:00
8b15445328
Former-commit-id: 1de24b7eb79676d1aba9d799a58c5a753290cf52
3.9 KiB
3.9 KiB
cw-elevator-application v2.0.0 SQL与代码一致性审核记录
审核目标:确认发布规范涉及 SQL 脚本与当前代码逻辑一致,满足实施交付依据留档要求。
审核范围:tenant_visitor_floor_policy 建表脚本、初始化脚本、访客派梯策略读取与求交流程。
审核时间:2026-04-29
审核人:____________
1. 审核过程
- 审阅 SQL 脚本:
docs/sql/tenant_visitor_floor_policy.sqldocs/sql/tenant_visitor_floor_policy_init_guangfa_fund.sql
- 审阅代码路径:
cw-elevator-application-service/.../PersonRuleServiceImpl#addVisitorcw-elevator-application-data/.../TenantVisitorFloorPolicyMapper.xmlcw-elevator-application-data/.../TenantVisitorFloorPolicyDto
- 做场景对照:
- UC-01:调用方未传
floorIds - UC-02:调用方已传
floorIds - 策略缺失/无效 JSON/交集为空等异常分支
- UC-01:调用方未传
- 形成一致性结论与风险提示,并纳入发布包。
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. 风险提示与建议
- 唯一性治理风险(中)
DDL 使用UNIQUE KEY (business_id, building_id),在 MySQL 下building_id=NULL可能存在多行;当前代码通过ORDER BY updated_at DESC, policy_version DESC LIMIT 1取最新一条,不阻断功能,但建议运维侧增加“每租户默认策略唯一”巡检。 - 配置数据质量风险(中)
allow_zone_ids必须是电梯域zone_id字符串数组,若误填其它系统 UUID 会导致策略不生效或交集为空。
6. 签字确认
| 角色 | 姓名 | 日期 | 备注 |
|---|---|---|---|
| 审核人 | ____________ |
____ |
____ |
| 实施负责人 | ____________ |
____ |
____ |
| 甲方确认(可选) | ____________ |
____ |
____ |