吸收数字员工审批历史订阅策略
This commit is contained in:
@@ -473,6 +473,13 @@ export interface DigitalEmployeeUiState {
|
||||
muted_levels: string[];
|
||||
updated_at: string | null;
|
||||
};
|
||||
approvalSubscriptionPreferences?: {
|
||||
enabled: boolean;
|
||||
subscribed_actions: string[];
|
||||
subscribed_risk_levels: string[];
|
||||
notify_on_timeout: boolean;
|
||||
updated_at: string | null;
|
||||
};
|
||||
consoleRole?: string;
|
||||
rolePreferences?: Record<string, unknown>;
|
||||
profile: {
|
||||
@@ -649,6 +656,7 @@ function defaultUiState(): DigitalEmployeeUiState {
|
||||
decisionResultsByDate: {},
|
||||
notificationStateById: {},
|
||||
notificationPreferences: defaultNotificationPreferences(),
|
||||
approvalSubscriptionPreferences: defaultApprovalSubscriptionPreferences(),
|
||||
consoleRole: "sales",
|
||||
rolePreferences: {},
|
||||
profile: {
|
||||
@@ -711,6 +719,16 @@ function defaultNotificationPreferences(): NonNullable<DigitalEmployeeUiState["n
|
||||
};
|
||||
}
|
||||
|
||||
function defaultApprovalSubscriptionPreferences(): NonNullable<DigitalEmployeeUiState["approvalSubscriptionPreferences"]> {
|
||||
return {
|
||||
enabled: true,
|
||||
subscribed_actions: ["comment", "delegate", "mark_timeout", "mark_risk", "clear_risk", "decision"],
|
||||
subscribed_risk_levels: ["high", "critical"],
|
||||
notify_on_timeout: true,
|
||||
updated_at: null,
|
||||
};
|
||||
}
|
||||
|
||||
function normalizeStringArray(value: unknown): string[] {
|
||||
if (!Array.isArray(value)) return [];
|
||||
return [...new Set(value.filter((item): item is string => typeof item === "string" && Boolean(item.trim())))];
|
||||
@@ -730,6 +748,26 @@ function normalizeNotificationPreferences(
|
||||
};
|
||||
}
|
||||
|
||||
function normalizeApprovalSubscriptionPreferences(
|
||||
value: unknown,
|
||||
): NonNullable<DigitalEmployeeUiState["approvalSubscriptionPreferences"]> {
|
||||
const fallback = defaultApprovalSubscriptionPreferences();
|
||||
const record = value && typeof value === "object" && !Array.isArray(value)
|
||||
? value as Record<string, unknown>
|
||||
: {};
|
||||
return {
|
||||
enabled: record.enabled !== false,
|
||||
subscribed_actions: normalizeStringArray(record.subscribed_actions).length > 0
|
||||
? normalizeStringArray(record.subscribed_actions)
|
||||
: fallback.subscribed_actions,
|
||||
subscribed_risk_levels: normalizeStringArray(record.subscribed_risk_levels).length > 0
|
||||
? normalizeStringArray(record.subscribed_risk_levels)
|
||||
: fallback.subscribed_risk_levels,
|
||||
notify_on_timeout: record.notify_on_timeout !== false,
|
||||
updated_at: typeof record.updated_at === "string" ? record.updated_at : null,
|
||||
};
|
||||
}
|
||||
|
||||
function normalizeUiState(
|
||||
value: Partial<DigitalEmployeeUiState>,
|
||||
): DigitalEmployeeUiState {
|
||||
@@ -745,6 +783,7 @@ function normalizeUiState(
|
||||
decisionResultsByDate: normalizeNestedStringMap(value.decisionResultsByDate),
|
||||
notificationStateById: normalizeRecord(value.notificationStateById),
|
||||
notificationPreferences: normalizeNotificationPreferences(value.notificationPreferences),
|
||||
approvalSubscriptionPreferences: normalizeApprovalSubscriptionPreferences(value.approvalSubscriptionPreferences),
|
||||
consoleRole: typeof value.consoleRole === "string" && value.consoleRole.trim()
|
||||
? value.consoleRole
|
||||
: fallback.consoleRole,
|
||||
@@ -785,6 +824,8 @@ function digitalEmployeeUiActionMessage(action: string, date?: string): string {
|
||||
return "数字员工运营偏好已更新";
|
||||
case "update_notification_preferences":
|
||||
return "数字员工通知订阅已更新";
|
||||
case "update_approval_subscriptions":
|
||||
return "数字员工审批订阅已更新";
|
||||
default:
|
||||
return `数字员工页面状态已更新${suffix}`;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user