吸收数字员工审批跨端冲突可视化

This commit is contained in:
baiyanyun
2026-06-11 21:53:08 +08:00
parent 84d34236e8
commit e57c94c19d
15 changed files with 625 additions and 208 deletions

View File

@@ -124,6 +124,7 @@ export interface DigitalEmployeeApprovalUpdatesPullResult {
pulled_at: string | null;
applied: number;
ignored: number;
conflicted?: number;
error?: string | null;
}
@@ -594,9 +595,11 @@ export async function pullDigitalEmployeeApprovalUpdates(
const pulledAt = new Date().toISOString();
let applied = 0;
let ignored = 0;
let conflicted = 0;
for (const update of updates) {
const result = upsertDigitalEmployeeApprovalFromRemote({ ...update, source: update.source ?? "management-api" });
if (result.ok && !result.skipped) applied += 1;
if (result.ok && result.conflict) conflicted += 1;
else if (result.ok && !result.skipped) applied += 1;
else ignored += 1;
}
recordApprovalSyncEvent("approval_updates_pulled", pulledAt, {
@@ -605,9 +608,10 @@ export async function pullDigitalEmployeeApprovalUpdates(
ok: true,
applied,
ignored,
conflicted,
source: "management-api",
});
return { ok: true, endpoint: config.approvalUpdatesEndpoint, pulled_at: pulledAt, applied, ignored, error: null };
return { ok: true, endpoint: config.approvalUpdatesEndpoint, pulled_at: pulledAt, applied, ignored, conflicted, error: null };
} catch (error) {
const pulledAt = new Date().toISOString();
const message = normalizeError(error);