吸收数字员工管理端审批裁决策略预览
This commit is contained in:
@@ -52,6 +52,18 @@ public class DigitalEmployeeAdminWorkbenchRowDto {
|
||||
private String triggerSource;
|
||||
@JsonProperty("approval_id")
|
||||
private String approvalId;
|
||||
@JsonProperty("approval_policy_id")
|
||||
private String approvalPolicyId;
|
||||
@JsonProperty("conflict_policy_id")
|
||||
private String conflictPolicyId;
|
||||
@JsonProperty("decision_guard_status")
|
||||
private String decisionGuardStatus;
|
||||
@JsonProperty("batch_accept_remote_disabled")
|
||||
private Boolean batchAcceptRemoteDisabled;
|
||||
@JsonProperty("auto_decision_disabled")
|
||||
private Boolean autoDecisionDisabled;
|
||||
@JsonProperty("policy_reason")
|
||||
private String policyReason;
|
||||
@JsonProperty("artifact_id")
|
||||
private String artifactId;
|
||||
@JsonProperty("artifact_group_id")
|
||||
|
||||
@@ -1068,6 +1068,12 @@ public class DigitalEmployeeSyncApplicationServiceImpl implements DigitalEmploye
|
||||
.orchestrationId(firstString(businessView.get("orchestration_id"), businessView.get("orchestrationId"), payload.get("orchestration_id"), payload.get("orchestrationId")))
|
||||
.triggerSource(firstString(businessView.get("trigger_source"), businessView.get("triggerSource"), payload.get("trigger_source"), payload.get("triggerSource")))
|
||||
.approvalId(firstString(businessView.get("approval_id"), payload.get("approval_id"), "approval".equals(record.getEntityType()) ? record.getEntityId() : null))
|
||||
.approvalPolicyId(firstString(businessView.get("approval_policy_id"), businessView.get("approvalPolicyId"), payload.get("approval_policy_id"), payload.get("approvalPolicyId")))
|
||||
.conflictPolicyId(firstString(businessView.get("conflict_policy_id"), businessView.get("conflictPolicyId"), payload.get("conflict_policy_id"), payload.get("conflictPolicyId")))
|
||||
.decisionGuardStatus(firstString(businessView.get("decision_guard_status"), businessView.get("decisionGuardStatus"), payload.get("decision_guard_status"), payload.get("decisionGuardStatus")))
|
||||
.batchAcceptRemoteDisabled(nullableBooleanValue(firstPresent(businessView.get("batch_accept_remote_disabled"), businessView.get("batchAcceptRemoteDisabled"), payload.get("batch_accept_remote_disabled"), payload.get("batchAcceptRemoteDisabled"))))
|
||||
.autoDecisionDisabled(nullableBooleanValue(firstPresent(businessView.get("auto_decision_disabled"), businessView.get("autoDecisionDisabled"), payload.get("auto_decision_disabled"), payload.get("autoDecisionDisabled"))))
|
||||
.policyReason(firstString(businessView.get("policy_reason"), businessView.get("policyReason"), payload.get("policy_reason"), payload.get("policyReason")))
|
||||
.artifactId(firstString(businessView.get("artifact_id"), payload.get("artifact_id"), "artifact".equals(record.getEntityType()) ? record.getEntityId() : null))
|
||||
.artifactGroupId(firstString(businessView.get("artifact_group_id"), businessView.get("artifactGroupId"), payload.get("artifact_group_id"), payload.get("artifactGroupId")))
|
||||
.artifactCount(numberValue(firstPresent(businessView.get("artifact_count"), businessView.get("artifactCount"), payload.get("artifact_count"), payload.get("artifactCount"))))
|
||||
|
||||
@@ -283,16 +283,22 @@ class DigitalEmployeeSyncApplicationServiceImplTest {
|
||||
when(repository.queryBusinessRecords(eq(101L), eq(null), eq(null), eq(null), eq(null), eq(null), eq(null), eq(null), eq(1L), eq(20L)))
|
||||
.thenReturn(page(List.of(
|
||||
record("outbox-approval-conflict", "approval", "approval-1", 101L, new Date(10_000),
|
||||
Map.of(
|
||||
"entity_type", "approval",
|
||||
"title", "远端审批冲突",
|
||||
"status", "pending",
|
||||
"approval_conflict_active", true,
|
||||
"approval_conflict_reason", "terminal_status_mismatch",
|
||||
"approval_id", "approval-1",
|
||||
"plan_id", "plan-1",
|
||||
"task_id", "task-1",
|
||||
"priority", "high"
|
||||
Map.ofEntries(
|
||||
Map.entry("entity_type", "approval"),
|
||||
Map.entry("title", "远端审批冲突"),
|
||||
Map.entry("status", "pending"),
|
||||
Map.entry("approval_conflict_active", true),
|
||||
Map.entry("approval_conflict_reason", "terminal_status_mismatch"),
|
||||
Map.entry("approval_id", "approval-1"),
|
||||
Map.entry("plan_id", "plan-1"),
|
||||
Map.entry("task_id", "task-1"),
|
||||
Map.entry("priority", "high"),
|
||||
Map.entry("approval_policy_id", "approval-policy-1"),
|
||||
Map.entry("conflict_policy_id", "conflict-policy-1"),
|
||||
Map.entry("decision_guard_status", "protected"),
|
||||
Map.entry("batch_accept_remote_disabled", true),
|
||||
Map.entry("auto_decision_disabled", true),
|
||||
Map.entry("policy_reason", "manual_review_required")
|
||||
),
|
||||
Map.of("id", "approval-1", "status", "pending")),
|
||||
record("outbox-risk-approval", "event", "event-risk-1", 101L, new Date(11_000),
|
||||
@@ -344,6 +350,12 @@ class DigitalEmployeeSyncApplicationServiceImplTest {
|
||||
assertThat(result.getRecords().get(0).getView()).isEqualTo("approval_governance");
|
||||
assertThat(result.getRecords().get(0).getApprovalId()).isEqualTo("approval-1");
|
||||
assertThat(result.getRecords().get(0).getCategory()).isEqualTo("approval_conflict");
|
||||
assertThat(result.getRecords().get(0).getApprovalPolicyId()).isEqualTo("approval-policy-1");
|
||||
assertThat(result.getRecords().get(0).getConflictPolicyId()).isEqualTo("conflict-policy-1");
|
||||
assertThat(result.getRecords().get(0).getDecisionGuardStatus()).isEqualTo("protected");
|
||||
assertThat(result.getRecords().get(0).getBatchAcceptRemoteDisabled()).isTrue();
|
||||
assertThat(result.getRecords().get(0).getAutoDecisionDisabled()).isTrue();
|
||||
assertThat(result.getRecords().get(0).getPolicyReason()).isEqualTo("manual_review_required");
|
||||
assertThat(result.getRecords().get(1).getCategory()).isEqualTo("risk_approval");
|
||||
assertThat(result.getRecords().get(2).getRouteDecisionId()).isEqualTo("route-1");
|
||||
assertThat(result.getRecords().get(3).getApprovalId()).isEqualTo("approval-1");
|
||||
|
||||
Reference in New Issue
Block a user