吸收数字员工PlanStep本地软租约
This commit is contained in:
@@ -508,9 +508,14 @@ function planStepBusinessView(
|
||||
const payload = objectRecord(record.payload) ?? {};
|
||||
const dependencyGraph = objectRecord(payload.dependencyGraph ?? payload.dependency_graph) ?? {};
|
||||
const lastDispatch = objectRecord(payload.lastDispatch ?? payload.last_dispatch) ?? {};
|
||||
const dispatchLease = objectRecord(payload.dispatchLease ?? payload.dispatch_lease) ?? {};
|
||||
const dependsOn = stringArrayField(record.dependsOn ?? record.depends_on);
|
||||
const blockedDependencies = stringArrayField(dependencyGraph.blockedDependencies ?? dependencyGraph.blocked_dependencies);
|
||||
const waitingDependencies = stringArrayField(dependencyGraph.waitingDependencies ?? dependencyGraph.waiting_dependencies);
|
||||
const leaseState = stringField(dispatchLease.state) || null;
|
||||
const leaseExpiresAt = stringField(dispatchLease.expires_at ?? dispatchLease.expiresAt) || null;
|
||||
const leaseActive = leaseState === "active" && leaseExpiresAt !== null && leaseExpiresAt > new Date().toISOString();
|
||||
const skipReason = stringField(payload.skipReason ?? payload.skip_reason) || null;
|
||||
return {
|
||||
...base,
|
||||
plan_id: stringField(record.planId ?? record.plan_id) || null,
|
||||
@@ -524,9 +529,18 @@ function planStepBusinessView(
|
||||
waiting_dependencies: waitingDependencies,
|
||||
waiting_dependency_count: waitingDependencies.length,
|
||||
preferred_skill_ids: stringArrayField(record.preferredSkillIds ?? record.preferred_skill_ids),
|
||||
dispatchable: stringField(record.status) === "ready" && blockedDependencies.length === 0 && waitingDependencies.length === 0,
|
||||
skip_reason: stringField(payload.skipReason ?? payload.skip_reason) || null,
|
||||
dispatchable: !leaseActive && stringField(record.status) === "ready" && blockedDependencies.length === 0 && waitingDependencies.length === 0,
|
||||
skip_reason: leaseActive ? "lease_active" : skipReason,
|
||||
last_dispatch_status: stringField(lastDispatch.status) || null,
|
||||
lease: Object.keys(dispatchLease).length > 0 ? dispatchLease : null,
|
||||
lease_id: stringField(dispatchLease.lease_id ?? dispatchLease.leaseId) || null,
|
||||
lease_state: leaseState,
|
||||
lease_owner_device_id: stringField(dispatchLease.owner_device_id ?? dispatchLease.ownerDeviceId) || null,
|
||||
lease_acquired_at: stringField(dispatchLease.acquired_at ?? dispatchLease.acquiredAt) || null,
|
||||
lease_expires_at: leaseExpiresAt,
|
||||
lease_released_at: stringField(dispatchLease.released_at ?? dispatchLease.releasedAt) || null,
|
||||
lease_release_reason: stringField(dispatchLease.release_reason ?? dispatchLease.releaseReason) || null,
|
||||
lease_active: leaseActive,
|
||||
};
|
||||
}
|
||||
|
||||
@@ -590,6 +604,7 @@ function eventSpecificBusinessView(
|
||||
if (kind.startsWith("skill_call_")) return skillCallBusinessView(payload);
|
||||
if (isPlanStepDependencyEvent(kind)) return planStepDependencyBusinessView(payload);
|
||||
if (kind.startsWith("plan_step_dispatch_")) return planStepDispatchBusinessView(payload);
|
||||
if (isPlanStepLeaseEvent(kind)) return planStepLeaseBusinessView(payload);
|
||||
if (isPlanStepDispatchPolicyEvent(kind)) return planStepDispatchPolicyBusinessView(payload);
|
||||
if (kind === "governance_provide_task_input") return governanceProvideTaskInputBusinessView(payload);
|
||||
if (isNotificationEvent(kind)) return notificationBusinessView(payload);
|
||||
@@ -698,6 +713,24 @@ function planStepDispatchBusinessView(payload: Record<string, unknown>): Record<
|
||||
};
|
||||
}
|
||||
|
||||
function planStepLeaseBusinessView(payload: Record<string, unknown>): Record<string, unknown> {
|
||||
const lease = objectRecord(payload.lease) ?? payload;
|
||||
return {
|
||||
step_id: stringField(payload.step_id ?? payload.stepId) || null,
|
||||
plan_id: stringField(payload.plan_id ?? payload.planId) || null,
|
||||
task_id: stringField(payload.task_id ?? payload.taskId) || null,
|
||||
run_id: stringField(payload.run_id ?? payload.runId) || null,
|
||||
lease_id: stringField(payload.lease_id ?? payload.leaseId ?? lease.lease_id ?? lease.leaseId) || null,
|
||||
lease_state: stringField(payload.lease_state ?? payload.leaseState ?? lease.state) || null,
|
||||
lease_owner_device_id: stringField(payload.lease_owner_device_id ?? payload.leaseOwnerDeviceId ?? lease.owner_device_id ?? lease.ownerDeviceId) || null,
|
||||
lease_acquired_at: stringField(lease.acquired_at ?? lease.acquiredAt) || null,
|
||||
lease_expires_at: stringField(payload.lease_expires_at ?? payload.leaseExpiresAt ?? lease.expires_at ?? lease.expiresAt) || null,
|
||||
lease_released_at: stringField(lease.released_at ?? lease.releasedAt) || null,
|
||||
lease_release_reason: stringField(lease.release_reason ?? lease.releaseReason) || null,
|
||||
reason: stringField(payload.reason) || null,
|
||||
};
|
||||
}
|
||||
|
||||
function planStepDependencyBusinessView(payload: Record<string, unknown>): Record<string, unknown> {
|
||||
const dependencyGraph = objectRecord(payload.dependencyGraph ?? payload.dependency_graph) ?? {};
|
||||
const dependencies = stringArrayField(payload.dependsOn ?? payload.depends_on);
|
||||
@@ -771,6 +804,7 @@ function eventBusinessCategory(kind: string): string {
|
||||
if (kind.startsWith("skill_call_")) return "skill";
|
||||
if (isPlanStepDependencyEvent(kind)) return "dispatch";
|
||||
if (kind.startsWith("plan_step_dispatch_")) return "dispatch";
|
||||
if (isPlanStepLeaseEvent(kind)) return "dispatch";
|
||||
if (isPlanStepDispatchPolicyEvent(kind)) return "dispatch";
|
||||
if (isNotificationEvent(kind)) return "notification";
|
||||
if (kind.startsWith("governance_")) return "governance";
|
||||
@@ -789,6 +823,10 @@ function isPlanStepDispatchPolicyEvent(kind: string): boolean {
|
||||
return kind === "digital_workday_update_plan_step_dispatch_policy";
|
||||
}
|
||||
|
||||
function isPlanStepLeaseEvent(kind: string): boolean {
|
||||
return kind === "plan_step_lease_acquired" || kind === "plan_step_lease_released" || kind === "plan_step_lease_skipped";
|
||||
}
|
||||
|
||||
function isNotificationEvent(kind: string): boolean {
|
||||
return kind === "digital_workday_update_notification_preferences"
|
||||
|| kind === "digital_workday_notification_read"
|
||||
|
||||
Reference in New Issue
Block a user