feat(idm): govern delegation chains and timed escalation
Module Package Release / publish-packages (push) Successful in 11s
Module Package Release / publish-packages (push) Successful in 11s
This commit is contained in:
@@ -244,6 +244,10 @@ def _change_item(
|
||||
workflow_current_step_id=change.workflow_current_step_id,
|
||||
resulting_assignment_id=change.resulting_assignment_id,
|
||||
expires_at=change.expires_at,
|
||||
review_deadline_at=change.review_deadline_at,
|
||||
escalated_at=change.escalated_at,
|
||||
escalation_from_state=change.escalation_from_state,
|
||||
escalation_target_function_id=change.escalation_target_function_id,
|
||||
outcome_reason=change.outcome_reason,
|
||||
resource_revision=change.resource_revision,
|
||||
etag=change.strong_etag,
|
||||
@@ -297,6 +301,18 @@ def _record_change_audit(
|
||||
"workflow_instance_id": change.workflow_instance_id,
|
||||
"evidence": list(change.evidence),
|
||||
"resulting_assignment_id": change.resulting_assignment_id,
|
||||
"review_deadline_at": (
|
||||
change.review_deadline_at.isoformat()
|
||||
if change.review_deadline_at
|
||||
else None
|
||||
),
|
||||
"escalated_at": (
|
||||
change.escalated_at.isoformat() if change.escalated_at else None
|
||||
),
|
||||
"escalation_from_state": change.escalation_from_state,
|
||||
"escalation_target_function_id": (
|
||||
change.escalation_target_function_id
|
||||
),
|
||||
"resource_revision": change.resource_revision,
|
||||
},
|
||||
commit=False,
|
||||
@@ -370,6 +386,18 @@ def get_function_assignment_capability(
|
||||
decision and decision.recipient_acceptance_required
|
||||
),
|
||||
maximum_validity_days=(decision.maximum_validity_days if decision else None),
|
||||
delegation_allowed=bool(decision and decision.delegation_allowed),
|
||||
maximum_delegation_depth=(
|
||||
decision.maximum_delegation_depth if decision else 0
|
||||
),
|
||||
maximum_delegated_validity_days=(
|
||||
decision.maximum_delegated_validity_days if decision else None
|
||||
),
|
||||
escalation_rules=(
|
||||
[rule.to_dict() for rule in decision.escalation_rules]
|
||||
if decision
|
||||
else []
|
||||
),
|
||||
workflow_available=registry.has_capability(CAPABILITY_WORKFLOW_ORCHESTRATION),
|
||||
policy_available=registry.has_capability(
|
||||
CAPABILITY_POLICY_FUNCTION_ASSIGNMENT_GOVERNANCE
|
||||
|
||||
Reference in New Issue
Block a user