mirror of
https://github.com/hpd840321/starRiverProperty.git
synced 2026-06-09 08:20:31 +08:00
feat: add policy tracing logs across organization component and elevator
TenantVisitorFloorPolicyService: - [POLICY-HIT] log when policy matched with orgId, policyId, allowZones - [POLICY-MISS] debug log when no policy found for orgId - [POLICY-EMPTY] warn when allow_zone_ids parsed empty - [POLICY-FALLBACK] warn on query failure with orgId context - [POLICY-RESULT] info on matched orgId and zones in batch check ImgPersonServiceImpl.detail(): - [DETAIL] log raw floorList from listByImageId - [DETAIL-POLICY] log floorList REPLACED: before→after with orgIds - [DETAIL] warn when listByImageId fails ImgPersonServiceImpl.listByPage(): - [LIST-PAGE-POLICY] log policy hit with zone count and default - [LIST-PAGE-XHW] debug log for 40F/6F hardcoded branch - [LIST-PAGE-FILTER] debug log when visitor label filtered PersonRuleServiceImpl.addVisitor(): - [ADDV-DETAIL] log detail floorList and orgIds
This commit is contained in:
+2
@@ -183,6 +183,8 @@ public class PersonRuleServiceImpl extends AbstractAcsPassService implements Per
|
|||||||
this.logger.warn("被访人信息为空 personId={}", param.getPersonId());
|
this.logger.warn("被访人信息为空 personId={}", param.getPersonId());
|
||||||
return CloudwalkResult.fail("76260531", getMessage("76260531"));
|
return CloudwalkResult.fail("76260531", getMessage("76260531"));
|
||||||
}
|
}
|
||||||
|
this.logger.info("[ADDV-DETAIL] personId={} floorList={} orgIds={}",
|
||||||
|
param.getPersonId(), personResult.getFloorList(), personResult.getOrganizationIds());
|
||||||
|
|
||||||
// === 阶段2:确定生效楼层(规范:租户策略仅在组织 detail 以 allow_zone_ids「替代」写入 floorList;此处不做 ∩)===
|
// === 阶段2:确定生效楼层(规范:租户策略仅在组织 detail 以 allow_zone_ids「替代」写入 floorList;此处不做 ∩)===
|
||||||
List<String> effective;
|
List<String> effective;
|
||||||
|
|||||||
+7
-2
@@ -69,6 +69,7 @@ public class TenantVisitorFloorPolicyService {
|
|||||||
for (String id : orgIds) {
|
for (String id : orgIds) {
|
||||||
Optional<List<String>> zones = replacementZoneIdsIfPolicyActive(id);
|
Optional<List<String>> zones = replacementZoneIdsIfPolicyActive(id);
|
||||||
if (zones.isPresent()) {
|
if (zones.isPresent()) {
|
||||||
|
log.info("[POLICY-RESULT] matched orgId={} zones={}", id, zones.get());
|
||||||
return zones;
|
return zones;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -86,17 +87,21 @@ public class TenantVisitorFloorPolicyService {
|
|||||||
try {
|
try {
|
||||||
Optional<TenantVisitorFloorPolicy> policy = findEnabledPolicyByOrgId(orgId);
|
Optional<TenantVisitorFloorPolicy> policy = findEnabledPolicyByOrgId(orgId);
|
||||||
if (!policy.isPresent()) {
|
if (!policy.isPresent()) {
|
||||||
|
log.debug("[POLICY-MISS] no enabled policy for orgId={}", orgId);
|
||||||
return Optional.empty();
|
return Optional.empty();
|
||||||
}
|
}
|
||||||
List<String> allow = parseAllowZoneIds(policy.get().getAllowZoneIds());
|
List<String> allow = parseAllowZoneIds(policy.get().getAllowZoneIds());
|
||||||
if (allow.isEmpty()) {
|
if (allow.isEmpty()) {
|
||||||
|
log.warn("[POLICY-EMPTY] policy {} allow_zone_ids parsed empty", policy.get().getId());
|
||||||
return Optional.empty();
|
return Optional.empty();
|
||||||
}
|
}
|
||||||
|
log.info("[POLICY-HIT] orgId={} policyId={} allowZones={}",
|
||||||
|
orgId, policy.get().getId(), allow);
|
||||||
return Optional.of(new ArrayList<>(allow));
|
return Optional.of(new ArrayList<>(allow));
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
log.warn(
|
log.warn(
|
||||||
"tenant_visitor_floor_policy query failed, fallback to listByImageId floors: {}",
|
"[POLICY-FALLBACK] query failed for orgId={}, fallback to listByImageId: {}",
|
||||||
e.toString());
|
orgId, e.toString());
|
||||||
return Optional.empty();
|
return Optional.empty();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+21
@@ -332,6 +332,9 @@ public class ImgPersonServiceImpl extends AbstractImagStoreService
|
|||||||
imgStorePersonResult.setFloorInfoList(new ArrayList<>(policyFloorInfo));
|
imgStorePersonResult.setFloorInfoList(new ArrayList<>(policyFloorInfo));
|
||||||
imgStorePersonResult.setDefaultChooseFloor(policyZones.get().get(0));
|
imgStorePersonResult.setDefaultChooseFloor(policyZones.get().get(0));
|
||||||
imgStorePersonResult.setIsAcrossDay(Integer.valueOf(0));
|
imgStorePersonResult.setIsAcrossDay(Integer.valueOf(0));
|
||||||
|
this.logger.info("[LIST-PAGE-POLICY] personId={} orgIds={} zoneCount={} defaultZone={}",
|
||||||
|
imgStorePersonResult.getId(), imgStorePersonResult.getOrganizationIds(),
|
||||||
|
policyZones.get().size(), policyZones.get().get(0));
|
||||||
} else {
|
} else {
|
||||||
AcsPassRuleImageForm acsPassRuleImageForm = new AcsPassRuleImageForm();
|
AcsPassRuleImageForm acsPassRuleImageForm = new AcsPassRuleImageForm();
|
||||||
acsPassRuleImageForm.setPersonId(imgStorePersonResult.getId());
|
acsPassRuleImageForm.setPersonId(imgStorePersonResult.getId());
|
||||||
@@ -359,6 +362,8 @@ public class ImgPersonServiceImpl extends AbstractImagStoreService
|
|||||||
resultDto.setZoneName("40F");
|
resultDto.setZoneName("40F");
|
||||||
floorInfoList.add(resultDto);
|
floorInfoList.add(resultDto);
|
||||||
imgStorePersonResult.setFloorInfoList(floorInfoList);
|
imgStorePersonResult.setFloorInfoList(floorInfoList);
|
||||||
|
this.logger.debug("[LIST-PAGE-XHW] personId={} matched xhwId → 40F",
|
||||||
|
imgStorePersonResult.getId());
|
||||||
} else {
|
} else {
|
||||||
imgStorePersonResult.setDefaultChooseFloor(this.xhwSixFloorId);
|
imgStorePersonResult.setDefaultChooseFloor(this.xhwSixFloorId);
|
||||||
List<AcsPassRuleImageResultDto> floorInfoList = new ArrayList<>();
|
List<AcsPassRuleImageResultDto> floorInfoList = new ArrayList<>();
|
||||||
@@ -367,12 +372,16 @@ public class ImgPersonServiceImpl extends AbstractImagStoreService
|
|||||||
resultDto.setZoneName("6F");
|
resultDto.setZoneName("6F");
|
||||||
floorInfoList.add(resultDto);
|
floorInfoList.add(resultDto);
|
||||||
imgStorePersonResult.setFloorInfoList(floorInfoList);
|
imgStorePersonResult.setFloorInfoList(floorInfoList);
|
||||||
|
this.logger.debug("[LIST-PAGE-XHW] personId={} default → 6F",
|
||||||
|
imgStorePersonResult.getId());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!CollectionUtils.isEmpty(imgStorePersonResult.getLabelNames())
|
if (!CollectionUtils.isEmpty(imgStorePersonResult.getLabelNames())
|
||||||
&& imgStorePersonResult.getLabelNames().contains("访客")) {
|
&& imgStorePersonResult.getLabelNames().contains("访客")) {
|
||||||
|
this.logger.debug("[LIST-PAGE-FILTER] personId={} excluded (label=访客)",
|
||||||
|
imgStorePersonResult.getId());
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
newPersonResults.add(imgStorePersonResult);
|
newPersonResults.add(imgStorePersonResult);
|
||||||
@@ -640,15 +649,27 @@ public class ImgPersonServiceImpl extends AbstractImagStoreService
|
|||||||
floorList.add(
|
floorList.add(
|
||||||
((AcsPassRuleImageResultDto) acsPassRuleImageResultDtoList.get(i)).getZoneId());
|
((AcsPassRuleImageResultDto) acsPassRuleImageResultDtoList.get(i)).getZoneId());
|
||||||
}
|
}
|
||||||
|
int rawFloorCount = floorList.size();
|
||||||
|
this.logger.info("[DETAIL] personId={} listByImageId returned {} zones: {}",
|
||||||
|
param.getId(), rawFloorCount, floorList);
|
||||||
Optional<List<String>> replacementFloors =
|
Optional<List<String>> replacementFloors =
|
||||||
this.tenantVisitorFloorPolicyService.replacementZoneIdsIfPolicyActive(
|
this.tenantVisitorFloorPolicyService.replacementZoneIdsIfPolicyActive(
|
||||||
result.getOrganizationIds());
|
result.getOrganizationIds());
|
||||||
if (replacementFloors.isPresent()) {
|
if (replacementFloors.isPresent()) {
|
||||||
|
List<String> beforeReplacement = new ArrayList<>(floorList);
|
||||||
floorList = new ArrayList<>(replacementFloors.get());
|
floorList = new ArrayList<>(replacementFloors.get());
|
||||||
zoneNames = buildCommaSeparatedFloorNames(businessId, floorList);
|
zoneNames = buildCommaSeparatedFloorNames(businessId, floorList);
|
||||||
|
this.logger.info("[DETAIL-POLICY] personId={} orgIds={} floorList REPLACED: {}→{}",
|
||||||
|
param.getId(), result.getOrganizationIds(), beforeReplacement, floorList);
|
||||||
|
} else {
|
||||||
|
this.logger.debug("[DETAIL-POLICY] personId={} orgIds={} no policy matched, using raw floorList",
|
||||||
|
param.getId(), result.getOrganizationIds());
|
||||||
}
|
}
|
||||||
result.setFloorNames(zoneNames);
|
result.setFloorNames(zoneNames);
|
||||||
result.setFloorList(floorList);
|
result.setFloorList(floorList);
|
||||||
|
} else {
|
||||||
|
this.logger.warn("[DETAIL] personId={} listByImageId failed code={}",
|
||||||
|
param.getId(), images.getCode());
|
||||||
}
|
}
|
||||||
List<String> userIdList =
|
List<String> userIdList =
|
||||||
(List<String>)
|
(List<String>)
|
||||||
|
|||||||
Reference in New Issue
Block a user