feat: deep link digital sync failures

This commit is contained in:
baiyanyun
2026-06-07 01:35:08 +08:00
parent 508406ff10
commit 646901b5fa
16 changed files with 142 additions and 33 deletions

View File

@@ -1701,8 +1701,14 @@
.de-event-modal-actions {
display: flex;
justify-content: flex-end;
flex-wrap: wrap;
gap: 8px;
}
.de-event-modal-actions .de-btn-sm {
display: inline-flex;
align-items: center;
gap: 6px;
}
.de-event-history-toolbar {
display: flex;
align-items: center;

View File

@@ -73,6 +73,7 @@ interface QimingclawSyncFailure {
lastAttemptAt: string | null;
nextRetryAt?: string | null;
dueForRetry?: boolean;
managementRecordUrl?: string | null;
error: string | null;
createdAt: string;
updatedAt: string;

View File

@@ -73,6 +73,7 @@ interface ManagementSyncFailure {
lastAttemptAt: string | null;
nextRetryAt?: string | null;
dueForRetry?: boolean;
managementRecordUrl?: string | null;
error: string | null;
createdAt: string;
updatedAt: string;
@@ -1837,12 +1838,36 @@ export default function CommandDeck({ onNavigate }: { onNavigate: (target: Digit
<p>{selectedSyncFailure.error || '暂无错误详情。'}</p>
</div>
<div className="de-event-modal-actions">
<button type="button" className="de-btn-secondary de-btn-sm" onClick={() => setSelectedSyncFailure(null)}></button>
<button
type="button"
className="de-btn-secondary de-btn-sm"
onClick={() => setSelectedSyncFailure(null)}
>
</button>
{selectedSyncFailure.managementRecordUrl && (
<button
type="button"
className="de-btn-secondary de-btn-sm"
onClick={() =>
window.open(
selectedSyncFailure.managementRecordUrl || '',
'_blank',
'noopener,noreferrer',
)
}
>
<Eye size={14} />
</button>
)}
<button
type="button"
className="de-btn-primary de-btn-sm"
disabled={actionBusy === 'flush_management_sync'}
onClick={() => { void flushManagementSync().then(() => setSelectedSyncFailure(null)); }}
onClick={() => {
void flushManagementSync().then(() => setSelectedSyncFailure(null));
}}
>
{actionBusy === 'flush_management_sync' ? '同步中...' : '立即重试'}
</button>