mirror of
https://github.com/hpd840321/starRiverProperty.git
synced 2026-06-11 17:30:29 +08:00
feat: add service config templates and extraction script
Former-commit-id: 1de24b7eb79676d1aba9d799a58c5a753290cf52
This commit is contained in:
@@ -1,9 +1,9 @@
|
||||
artifact=cw-elevator-application-2.0.0.jar
|
||||
directory=/media/zebra/9e8fa357-7db6-4d70-88ed-d5de5a059a663/星河湾星中星/反编译/maven-cw-elevator-application/releases/v2.0.0
|
||||
built_at=2026-04-27T14:05:31+08:00
|
||||
built_at=2026-04-29T17:18:10+08:00
|
||||
java_home=/usr/lib/jvm/java-8-openjdk-amd64
|
||||
java_version_line=openjdk version "1.8.0_482"
|
||||
java_version_line=OpenJDK Runtime Environment (build 1.8.0_482-8u482-ga~us1-0ubuntu1~22.04-b08)
|
||||
java_version_line=OpenJDK 64-Bit Server VM (build 25.482-b08, mixed mode)
|
||||
git_rev=571c9a99ee26d90505e550c287eb8ad8d743ff8d
|
||||
git_rev=376f94edd602d3dfed1cbada6e08361ee7b08e73
|
||||
git_branch=release/cw-elevator-v1-lib-min-risk
|
||||
|
||||
@@ -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. 签字确认
|
||||
|
||||
| 角色 | 姓名 | 日期 | 备注 |
|
||||
|------|------|------|------|
|
||||
| 审核人 | `____________` | `____` | `____` |
|
||||
| 实施负责人 | `____________` | `____` | `____` |
|
||||
| 甲方确认(可选) | `____________` | `____` | `____` |
|
||||
|
||||
+92
@@ -0,0 +1,92 @@
|
||||
# 图片前缀
|
||||
cloudwalk.elevator.common.relativePrefix=/cwos-portal/portal/fileManager/imgByPath?path=
|
||||
# 数据库sharding配置
|
||||
spring.shardingsphere.sharding.tables.IT_ACS_RECOG_RECORD.actual-data-nodes=ds0.IT_ACS_RECOG_RECORD_$->{2020..2030}
|
||||
spring.shardingsphere.sharding.tables.IT_ACS_RECOG_RECORD.table-strategy.standard.sharding-column=RECOGNITION_TIME
|
||||
spring.shardingsphere.sharding.tables.IT_ACS_RECOG_RECORD.table-strategy.standard.precise-algorithm-class-name=cn.cloudwalk.elevator.YearlyShardingAlgorithm
|
||||
spring.shardingsphere.sharding.tables.IT_ACS_RECOG_RECORD.table-strategy.standard.range-algorithm-class-name=cn.cloudwalk.elevator.YearlyShardingAlgorithm
|
||||
# 电梯开门事件表
|
||||
spring.shardingsphere.sharding.tables.IT_ACS_ELEVATOR_RECORD.actual-data-nodes=ds0.IT_ACS_ELEVATOR_RECORD_$->{2020..2030}
|
||||
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
|
||||
spring.shardingsphere.sharding.tables.IT_ACS_ELEVATOR_RECORD.table-strategy.standard.range-algorithm-class-name=cn.cloudwalk.elevator.YearlyShardingAlgorithm
|
||||
spring.shardingsphere.sharding.binding-tables=IT_ACS_ELEVATOR_RECORD,IT_ACS_RECOG_RECORD
|
||||
# 人脸抓拍识别阈值
|
||||
cloudwalk.access-control.common.device-atrr-map.ACS_FACE_REG_THRESHOLD=75
|
||||
# 人脸比对查询过滤阈值
|
||||
cloudwalk.access-control.common.face-compare-THRESHOLD=80
|
||||
# 定时任务配置
|
||||
cloudwalk.access-control.schedual.jobs.AcsRecordStatisticsByDayJob.name=AcsRecordStatisticsByDayJob
|
||||
cloudwalk.access-control.schedual.jobs.AcsRecordStatisticsByDayJob.group=ACCESS-CONTROL_GROUP
|
||||
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.........
|
||||
## 每天凌晨0点10分执行
|
||||
cloudwalk.access-control.schedual.jobs.AcsRecordStatisticsByDayJob.cron-expression=0 10 0 * * ?
|
||||
cloudwalk.access-control.schedual.jobs.AcsRecordStatisticsByDayJob.priority=1
|
||||
# 开门记录推送开关:true-开;false-关。默认为关
|
||||
cloudwalk.access-control.common.publish-opendoor-switch=false
|
||||
# 开门记录推送serviceCode
|
||||
cloudwalk.access-control.common.publish-opendoor-service-code=access-control
|
||||
# 后端识别下发开门指令相关配置
|
||||
# 抓拍时间在多久之前不下发开门指令。默认5分钟。单位:毫秒。
|
||||
cloudwalk.access-control.common.face-capture-time-expired-milliseconds=300000
|
||||
# 多少毫秒以内的多条抓拍记录只下发一次开门指令。默认3秒。单位:毫秒
|
||||
cloudwalk.access-control.common.face-capture-interval-milliseconds=3000
|
||||
# 开门记录过期时间。多少毫秒之后,未上报开门记录,开门记录状态更新为失败。默认10分钟。单位:毫秒
|
||||
cloudwalk.access-control.common.face-capture-open-door-fail-milliseconds=600000
|
||||
# 门禁控制器类型集合
|
||||
cloudwalk.access-control.common.device-controller-array[0]=mqtt
|
||||
# 设备种类id集合
|
||||
cloudwalk.access-control.common.device-category-array[0]=4
|
||||
cloudwalk.access-control.common.device-category-array[1]=5
|
||||
cloudwalk.access-control.common.device-category-array[2]=7
|
||||
cloudwalk.access-control.common.device-category-array[3]=2
|
||||
cloudwalk.access-control.common.device-category-array[4]=8
|
||||
cloudwalk.access-control.common.device-category-array[5]=11
|
||||
# 来源:星河湾星中星/星中心/cw-elevator-application-V1.0.0.20211103/application-access-control.properties(生产门禁 access-control 参数)
|
||||
# profile=access-control 时与本目录 application.properties 合并加载;勿随意删减与分表相关项。
|
||||
# \u56FE\u7247\u524D\u7F00
|
||||
cloudwalk.elevator.common.relativePrefix=/cwos-portal/portal/fileManager/imgByPath?path=
|
||||
# \u6570\u636E\u5E93sharding\u914D\u7F6E
|
||||
spring.shardingsphere.sharding.tables.IT_ACS_RECOG_RECORD.actual-data-nodes=ds0.IT_ACS_RECOG_RECORD_$->{2020..2030}
|
||||
spring.shardingsphere.sharding.tables.IT_ACS_RECOG_RECORD.table-strategy.standard.sharding-column=RECOGNITION_TIME
|
||||
spring.shardingsphere.sharding.tables.IT_ACS_RECOG_RECORD.table-strategy.standard.precise-algorithm-class-name=cn.cloudwalk.elevator.YearlyShardingAlgorithm
|
||||
spring.shardingsphere.sharding.tables.IT_ACS_RECOG_RECORD.table-strategy.standard.range-algorithm-class-name=cn.cloudwalk.elevator.YearlyShardingAlgorithm
|
||||
# \u7535\u68AF\u5F00\u95E8\u4E8B\u4EF6\u8868
|
||||
spring.shardingsphere.sharding.tables.IT_ACS_ELEVATOR_RECORD.actual-data-nodes=ds0.IT_ACS_ELEVATOR_RECORD_$->{2020..2030}
|
||||
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
|
||||
spring.shardingsphere.sharding.tables.IT_ACS_ELEVATOR_RECORD.table-strategy.standard.range-algorithm-class-name=cn.cloudwalk.elevator.YearlyShardingAlgorithm
|
||||
spring.shardingsphere.sharding.binding-tables=IT_ACS_ELEVATOR_RECORD,IT_ACS_RECOG_RECORD
|
||||
# \u4EBA\u8138\u6293\u62CD\u8BC6\u522B\u9608\u503C
|
||||
cloudwalk.access-control.common.device-atrr-map.ACS_FACE_REG_THRESHOLD=75
|
||||
# \u4EBA\u8138\u6BD4\u5BF9\u67E5\u8BE2\u8FC7\u6EE4\u9608\u503C
|
||||
cloudwalk.access-control.common.face-compare-THRESHOLD=80
|
||||
# \u5B9A\u65F6\u4EFB\u52A1\u914D\u7F6E
|
||||
cloudwalk.access-control.schedual.jobs.AcsRecordStatisticsByDayJob.name=AcsRecordStatisticsByDayJob
|
||||
cloudwalk.access-control.schedual.jobs.AcsRecordStatisticsByDayJob.group=ACCESS-CONTROL_GROUP
|
||||
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.........
|
||||
## \u6BCF\u5929\u51CC\u66680\u70B910\u5206\u6267\u884C
|
||||
cloudwalk.access-control.schedual.jobs.AcsRecordStatisticsByDayJob.cron-expression=0 10 0 * * ?
|
||||
cloudwalk.access-control.schedual.jobs.AcsRecordStatisticsByDayJob.priority=1
|
||||
# \u5F00\u95E8\u8BB0\u5F55\u63A8\u9001\u5F00\u5173\uFF1Atrue-\u5F00\uFF1Bfalse-\u5173\u3002\u9ED8\u8BA4\u4E3A\u5173
|
||||
cloudwalk.access-control.common.publish-opendoor-switch=false
|
||||
# \u5F00\u95E8\u8BB0\u5F55\u63A8\u9001serviceCode
|
||||
cloudwalk.access-control.common.publish-opendoor-service-code=access-control
|
||||
# \u540E\u7AEF\u8BC6\u522B\u4E0B\u53D1\u5F00\u95E8\u6307\u4EE4\u76F8\u5173\u914D\u7F6E
|
||||
# \u6293\u62CD\u65F6\u95F4\u5728\u591A\u4E45\u4E4B\u524D\u4E0D\u4E0B\u53D1\u5F00\u95E8\u6307\u4EE4\u3002\u9ED8\u8BA45\u5206\u949F\u3002\u5355\u4F4D\uFF1A\u6BEB\u79D2\u3002
|
||||
cloudwalk.access-control.common.face-capture-time-expired-milliseconds=300000
|
||||
# \u591A\u5C11\u6BEB\u79D2\u4EE5\u5185\u7684\u591A\u6761\u6293\u62CD\u8BB0\u5F55\u53EA\u4E0B\u53D1\u4E00\u6B21\u5F00\u95E8\u6307\u4EE4\u3002\u9ED8\u8BA43\u79D2\u3002\u5355\u4F4D\uFF1A\u6BEB\u79D2
|
||||
cloudwalk.access-control.common.face-capture-interval-milliseconds=3000
|
||||
# \u5F00\u95E8\u8BB0\u5F55\u8FC7\u671F\u65F6\u95F4\u3002\u591A\u5C11\u6BEB\u79D2\u4E4B\u540E\uFF0C\u672A\u4E0A\u62A5\u5F00\u95E8\u8BB0\u5F55\uFF0C\u5F00\u95E8\u8BB0\u5F55\u72B6\u6001\u66F4\u65B0\u4E3A\u5931\u8D25\u3002\u9ED8\u8BA410\u5206\u949F\u3002\u5355\u4F4D\uFF1A\u6BEB\u79D2
|
||||
cloudwalk.access-control.common.face-capture-open-door-fail-milliseconds=600000
|
||||
# \u95E8\u7981\u63A7\u5236\u5668\u7C7B\u578B\u96C6\u5408
|
||||
cloudwalk.access-control.common.device-controller-array[0]=mqtt
|
||||
# \u8BBE\u5907\u79CD\u7C7Bid\u96C6\u5408
|
||||
cloudwalk.access-control.common.device-category-array[0]=4
|
||||
cloudwalk.access-control.common.device-category-array[1]=5
|
||||
cloudwalk.access-control.common.device-category-array[2]=7
|
||||
cloudwalk.access-control.common.device-category-array[3]=2
|
||||
cloudwalk.access-control.common.device-category-array[4]=8
|
||||
cloudwalk.access-control.common.device-category-array[5]=11
|
||||
@@ -0,0 +1,111 @@
|
||||
# spring配置
|
||||
spring.mvc.throw-exception-if-no-handler-found=true
|
||||
spring.mvc.locale=zh_CN
|
||||
# 资源文件配置
|
||||
spring.messages.basename=access-control
|
||||
spring.messages.always-use-message-format=true
|
||||
spring.messages.encoding=utf-8
|
||||
# http配置
|
||||
spring.http.multipart.max-file-size=200MB
|
||||
spring.http.multipart.max-request-size=200MB
|
||||
spring.http.encoding.force=true
|
||||
spring.http.encoding.charset=UTF-8
|
||||
spring.http.encoding.enabled=true
|
||||
# 日志配置
|
||||
logging.config=classpath:logs/logback.xml
|
||||
logging.file=${spring.application.name}
|
||||
logging.path=/data/cwos/cw-elevator-application-V1.0.0.20211103/logs
|
||||
logging.level.root=info
|
||||
logging.level.cn.cloudwalk=info
|
||||
# mybatis配置
|
||||
mybatis.mapper-locations=classpath*:cn/cloudwalk/elevator/**/*.xml
|
||||
mybatis.config-location=classpath:mapper/mybatis-config.xml
|
||||
# 序列号配置
|
||||
cloudwalk.serial.enable=true
|
||||
cloudwalk.serial.serial-length=8
|
||||
cloudwalk.serial.serial-type=redis
|
||||
cloudwalk.serial.serial-redis-key=CLOUDWALK-ACS-SERIAL-KEY
|
||||
# 缓存配置
|
||||
cloudwalk.spring.cache.expires=CACHE_NAME_APPLICATIONIDS#21600,ACS_DeviceTypesCache#7200,ACS_DeviceTypeFeaturesCache#7200,ACS_DeviceAttrsCache#7200,ACS_RecordStatisticsCache#90000,ACS_AreaTreeCache#60
|
||||
# 内部接口调用客户端及超时配置
|
||||
feign.hystrix.enable=true
|
||||
feign.httpclient.enable=false
|
||||
feign.okhttp.enable=true
|
||||
ribbon.http.client.enabled=false
|
||||
ribbon.okhttp.enabled=true
|
||||
ribbon.ReadTimeout=10000
|
||||
ribbon.ConnectTimeout=10000
|
||||
hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=10000
|
||||
# 健康检查配置
|
||||
management.health.redis.enabled=false
|
||||
management.health.db.enabled=false
|
||||
# 数据脱敏配置
|
||||
cloudwalk.datafield.enable=true
|
||||
cloudwalk.datafield.securityKey=d4b2aabc97394a12a27fc3cca6cd9ba1
|
||||
cloudwalk.datafield.encrypt=AES
|
||||
# redis配置
|
||||
spring.redis.host=redis_01.redis_ip
|
||||
spring.redis.port=6379
|
||||
spring.redis.password=1qaz!QAZ
|
||||
spring.redis.database=5
|
||||
spring.redis.timeout=0
|
||||
spring.redis.pool.max-active=10
|
||||
spring.redis.pool.max-idle=1
|
||||
spring.redis.pool.max-wait=10
|
||||
spring.redis.pool.min-idle=0
|
||||
# 数据库sharding配置
|
||||
spring.shardingsphere.datasource.names=ds0
|
||||
spring.shardingsphere.datasource.ds0.type=com.zaxxer.hikari.HikariDataSource
|
||||
spring.shardingsphere.datasource.ds0.driver-class-name=com.mysql.jdbc.Driver
|
||||
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.shardingsphere.datasource.ds0.username=cloudwalk
|
||||
spring.shardingsphere.datasource.ds0.password=1qaz!QAZ
|
||||
spring.shardingsphere.datasource.ds0.connection-timeout=60000
|
||||
spring.shardingsphere.datasource.ds0.maximum-pool-size=20
|
||||
spring.shardingsphere.datasource.ds0.minimum-idle=5
|
||||
spring.shardingsphere.datasource.ds0.max-lifetime=1765000
|
||||
spring.shardingsphere.datasource.ds0.auto-commit=true
|
||||
spring.shardingsphere.datasource.ds0.pool-name=ds0-pool
|
||||
spring.shardingsphere.props.sql.show=false
|
||||
spring.shardingsphere.sharding.default-data-source-name=ds0
|
||||
# 微服务服务名配置
|
||||
feign.device.name=cwos-portal
|
||||
feign.resource.name=cwos-portal
|
||||
feign.cwos-portal.name=cwos-portal
|
||||
feign.davinci-portal.name=cwos-portal
|
||||
feign.ninca-crk-std.name=ninca-crk-std
|
||||
feign.component-organization.name=ninca-common-component-organization
|
||||
feign.ninca-common.name=ninca-common
|
||||
feign.mqtt.name=cloudwalk-device-thirdparty
|
||||
# CWOS事件配置
|
||||
cloudwalk.event.bootstrap-servers=371bfca4972c43d2aefcf302d0a4a277:9092,44700995ee904679a7ad5afddcf93bb5:9092,0837a70b5fab47569391828f5feb2561:9092
|
||||
cloudwalk.event.group-id=cw-elevator-application-1
|
||||
cloudwalk.event.handler-executor-config.core-pool-size=10
|
||||
cloudwalk.event.handler-executor-config.maximum-pool-size=30
|
||||
# 分布式锁配置
|
||||
intelligent.lock.enable=true
|
||||
intelligent.lock.config.default-wait-time=10000
|
||||
lockWatchdogTimeout=21000
|
||||
# PERSON_NAME_SPACE
|
||||
person.name.space=recordEvent
|
||||
elevator.application.key=xinghewan
|
||||
elevator.application.time=600
|
||||
elevator.application.keyA=5B7DEF88FF04
|
||||
ninca-crk-std.ip=10.0.22.102:16106
|
||||
|
||||
#发送第三方数据ip
|
||||
sendRecord.ip=hrec.star-river.com:32165
|
||||
#sendRecord.ip=172.16.16.56:32165
|
||||
sendRecord.token.corpId=53db867a8bb747a1bd04dd1afcad8ca6
|
||||
sendRecord.token.appKey=293e2d708f0143c2957b702cef44d951
|
||||
sendRecord.token.appSecret=5f6995009b864669b52041b8f5dc4625
|
||||
#是否推送
|
||||
sendRecord.boolean=true
|
||||
# 设备处理线程池配置
|
||||
ninca.update.floor.pool.corePoolSize=5
|
||||
ninca.update.floor.pool.maxPoolSize=5
|
||||
ninca.update.floor.pool.queueCapacity=100000
|
||||
ninca.update.floor.pool.keepAliveSeconds=150
|
||||
ninca.update.floor.pool.allowCoreThreadTimeOut=true
|
||||
#楼栋id
|
||||
floor.building.id=605560539791228928
|
||||
@@ -0,0 +1,18 @@
|
||||
server.port=16112
|
||||
server.tomcat.uri-encoding=UTF-8
|
||||
spring.application.name=elevator-app
|
||||
spring.profiles.active=access-control
|
||||
# consul配置
|
||||
spring.cloud.consul.host=371bfca4972c43d2aefcf302d0a4a277
|
||||
spring.cloud.consul.port=8500
|
||||
spring.cloud.consul.enabled=true
|
||||
spring.cloud.consul.discovery.register=true
|
||||
spring.cloud.consul.discovery.enabled=false
|
||||
spring.cloud.consul.discovery.prefer-ip-address=true
|
||||
spring.cloud.consul.discovery.instance-id=${spring.application.name}-${spring.cloud.client.ipAddress}:${server.port}
|
||||
spring.cloud.consul.discovery.ip-address=${spring.cloud.client.ipAddress}
|
||||
spring.cloud.consul.discovery.deregister=false
|
||||
# zookeeper配置
|
||||
dubbo.registry.address=zookeeper://10.0.22.207:2181
|
||||
dubbo.protocol.port=16107
|
||||
dubbo.provider.version=1.0
|
||||
+47
@@ -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_id:component-organization.cw_is_organization
|
||||
-- NAME='[28-38F]广发基金管理有限公司' -> BUSINESS_ID = 2524639890ba4f2cba9ba1a4eeaa4015
|
||||
-- 28F zone_id:cw-elevator-application.code_elevator_area / image_rule_ref
|
||||
-- zone_id = 605560545117995008(zone_name=28F,code=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);
|
||||
@@ -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. 签字确认
|
||||
|
||||
| 角色 | 姓名 | 日期 | 备注 |
|
||||
|------|------|------|------|
|
||||
| 甲方确认 | `____________` | `____` | `____` |
|
||||
| 乙方实施 | `____________` | `____` | `____` |
|
||||
| 乙方复核 | `____________` | `____` | `____` |
|
||||
|
||||
Reference in New Issue
Block a user