fix(client): localize digital fallback missions

This commit is contained in:
baiyanyun
2026-06-07 18:09:39 +08:00
parent 757858a9aa
commit fa5522e32e
4 changed files with 58 additions and 76 deletions

View File

@@ -54,68 +54,50 @@ function makeMission(
} }
const DEMO_SKILLS: SkillSummary[] = [ const DEMO_SKILLS: SkillSummary[] = [
{ id: 'whitecollar-day-browser-portal-check', name: '工作台巡检', version: '1.0.0', enabled: true, description: '检查工作台首页、待办数量和重点入口是否可用。', category: '办公', capabilityLevel: 'standard', source: 'skill-api' }, { id: 'qimingclaw-client-health-check', name: '客户端自检', version: '1.0.0', enabled: true, description: '检查 Agent、MCP、Computer Server 和会话状态。', category: '执行', capabilityLevel: 'core', source: 'skill-api' },
{ id: 'whitecollar-day-browser-inbox-triage', name: '收件箱分拣', version: '1.0.0', enabled: true, description: '读取邮件和通知列表,按紧急程度整理待办。', category: '通信', capabilityLevel: 'standard', source: 'skill-api' }, { id: 'qimingclaw-remote-task-ingress', name: '远程任务接入', version: '1.0.0', enabled: true, description: '接收管理端下发任务并投射到本地执行队列。', category: '通信', capabilityLevel: 'core', source: 'skill-api' },
{ id: 'whitecollar-day-calendar-brief', name: '日程简报', version: '1.0.0', enabled: true, description: '生成当日会议、回访和报表节点的时间提醒。', category: '办公', capabilityLevel: 'standard', source: 'skill-api' }, { id: 'qimingclaw-acp-session-runner', name: 'ACP 会话执行', version: '1.0.0', enabled: true, description: '通过 qimingclaw ACP 引擎执行任务并记录 Run/Event。', category: '执行', capabilityLevel: 'specialized', source: 'skill-api' },
{ id: 'whitecollar-day-browser-crm-followup', name: '客户跟进', version: '1.0.0', enabled: true, description: '读取客户跟进页面,形成回访摘要和下一步建议。', category: '营销', capabilityLevel: 'specialized', source: 'skill-api' }, { id: 'qimingclaw-mcp-capability-scan', name: 'MCP 能力扫描', version: '1.0.0', enabled: true, description: '读取 MCP server 和工具清单,生成数字员工技能能力池。', category: '工具', capabilityLevel: 'standard', source: 'skill-api' },
{ id: 'whitecollar-day-browser-expense-approval', name: '费用审批核对', version: '1.0.0', enabled: true, description: '检查待审批费用单,筛出异常和超限项。', category: '财务', capabilityLevel: 'specialized', source: 'skill-api' }, { id: 'qimingclaw-approval-sync', name: '审批同步', version: '1.0.0', enabled: true, description: '把待确认事项回写到本地 approval 表并同步管理端。', category: '治理', capabilityLevel: 'specialized', source: 'skill-api' },
{ id: 'whitecollar-day-sales-snapshot', name: '经营快照', version: '1.0.0', enabled: true, description: '汇总客户、项目和当日经营看板。', category: '报表', capabilityLevel: 'standard', source: 'skill-api' }, { id: 'qimingclaw-artifact-report', name: '产物整理', version: '1.0.0', enabled: true, description: '整理本地执行产物、文件路径和日报输出。', category: '产物', capabilityLevel: 'standard', source: 'skill-api' },
{ id: 'whitecollar-day-report-export', name: '报表导出', version: '1.0.0', enabled: true, description: '整理并导出面向领导汇报的简版报表。', category: '报表', capabilityLevel: 'standard', source: 'skill-api' }, { id: 'qimingclaw-sync-diagnostics', name: '同步诊断', version: '1.0.0', enabled: true, description: '汇总 outbox 失败、重试历史和管理端同步状态。', category: '运维', capabilityLevel: 'standard', source: 'skill-api' },
{ id: 'whitecollar-day-browser-knowledge-check', name: '知识库核查', version: '1.0.0', enabled: true, description: '检索知识库资料,确认制度和模板是否最新。', category: '数字化', capabilityLevel: 'standard', source: 'skill-api' }, { id: 'qimingclaw-daily-report', name: '本地日报', version: '1.0.0', enabled: true, description: '基于 qimingclaw workday 投影生成本地文本日报。', category: '报表', capabilityLevel: 'standard', source: 'skill-api' },
{ id: 'whitecollar-day-task-board-sync', name: '任务看板同步', version: '1.0.0', enabled: true, description: '把今日处理结果同步到任务看板和协同清单。', category: '办公', capabilityLevel: 'standard', source: 'skill-api' },
{ id: 'whitecollar-day-browser-day-close', name: '日终收口', version: '1.0.0', enabled: true, description: '汇总今日动作、风险和明日重点。', category: '办公', capabilityLevel: 'specialized', source: 'skill-api' },
]; ];
const DEMO_MISSIONS: Mission[] = [ const DEMO_MISSIONS: Mission[] = [
makeMission( makeMission(
'whitecollar-day', 'qimingclaw-client-readiness',
'白领一天端到端验收', 'qimingclaw 客户端运行自检',
'模拟业务人员一天内通过数字员工完成网页采集、客户回访、资料整理和日报输出。', '检查客户端数字员工运行所需的 Agent、ACP、MCP、Computer Server 和同步配置。',
'active', 'active',
todayAt(10, 35), todayAt(10, 35),
[ [
{ id: 'contact', title: '读取供应商联系人', status: 'completed', preferredSkills: ['whitecollar-day-legacy-contact'], tasks: [makeTask('whitecollar-day', 'contact', '整理联系人名单', 'completed', 'whitecollar-day-legacy-contact', todayAt(8, 30), todayAt(8, 33))] }, { id: 'agent', title: '检查 Agent 服务', status: 'completed', preferredSkills: ['qimingclaw-client-health-check'], tasks: [makeTask('qimingclaw-client-readiness', 'agent', '读取 Agent 运行状态', 'completed', 'qimingclaw-client-health-check', todayAt(8, 30), todayAt(8, 33))] },
{ id: 'news', title: '读取行业动态', status: 'completed', preferredSkills: ['whitecollar-day-legacy-news'], tasks: [makeTask('whitecollar-day', 'news', '整理行业动态摘要', 'completed', 'whitecollar-day-legacy-news', todayAt(8, 35), todayAt(8, 41))] }, { id: 'mcp', title: '扫描 MCP server', status: 'completed', preferredSkills: ['qimingclaw-mcp-capability-scan'], tasks: [makeTask('qimingclaw-client-readiness', 'mcp', '生成 MCP 能力清单', 'completed', 'qimingclaw-mcp-capability-scan', todayAt(8, 35), todayAt(8, 41))] },
{ id: 'form', title: '预填客户回访登记', status: 'completed', preferredSkills: ['whitecollar-day-legacy-form'], tasks: [makeTask('whitecollar-day', 'form', '填充回访登记表', 'completed', 'whitecollar-day-legacy-form', todayAt(8, 45), todayAt(8, 51))] }, { id: 'computer', title: '检查 Computer Server', status: 'completed', preferredSkills: ['qimingclaw-client-health-check'], tasks: [makeTask('qimingclaw-client-readiness', 'computer', '确认电脑控制入口', 'completed', 'qimingclaw-client-health-check', todayAt(8, 45), todayAt(8, 51))] },
{ id: 'compare', title: '比对设备方案', status: 'running', preferredSkills: ['whitecollar-day-legacy-compare'], tasks: [makeTask('whitecollar-day', 'compare', '生成方案差异结论', 'running', 'whitecollar-day-legacy-compare', todayAt(10, 28), null)] }, { id: 'sync', title: '读取同步队列', status: 'running', preferredSkills: ['qimingclaw-sync-diagnostics'], tasks: [makeTask('qimingclaw-client-readiness', 'sync', '汇总 outbox 状态', 'running', 'qimingclaw-sync-diagnostics', todayAt(10, 28), null)] },
{ id: 'todos', title: '读取待办系统', status: 'pending', preferredSkills: ['whitecollar-day-legacy-todos'], tasks: [makeTask('whitecollar-day', 'todos', '汇总个人待办', 'pending', 'whitecollar-day-legacy-todos', null, null)] },
{ id: 'customers', title: '读取客户清单', status: 'pending', preferredSkills: ['whitecollar-day-legacy-customers'], tasks: [makeTask('whitecollar-day', 'customers', '提取重点客户', 'pending', 'whitecollar-day-legacy-customers', null, null)] },
{ id: 'download', title: '识别最新资料下载链接', status: 'pending', preferredSkills: ['whitecollar-day-legacy-download'], tasks: [makeTask('whitecollar-day', 'download', '识别最新制度材料', 'pending', 'whitecollar-day-legacy-download', null, null)] },
{ id: 'email', title: '生成客户跟进邮件', status: 'pending', preferredSkills: ['whitecollar-day-legacy-email'], tasks: [makeTask('whitecollar-day', 'email', '生成回访邮件草稿', 'pending', 'whitecollar-day-legacy-email', null, null)] },
{ id: 'daily-report', title: '生成工作日报', status: 'pending', preferredSkills: ['whitecollar-day-legacy-daily-report'], tasks: [makeTask('whitecollar-day', 'daily-report', '生成工作日报', 'pending', 'whitecollar-day-legacy-daily-report', null, null)] },
{ id: 'tomorrow-plan', title: '生成明日计划', status: 'pending', preferredSkills: ['whitecollar-day-legacy-tomorrow-plan'], tasks: [makeTask('whitecollar-day', 'tomorrow-plan', '整理明日计划', 'pending', 'whitecollar-day-legacy-tomorrow-plan', null, null)] },
], ],
), ),
makeMission('whitecollar-day-0830-browser-portal-check', '白领一天 08:30 工作台巡检', '巡检工作台首页、待办数量和关键入口状态。', 'completed', todayAt(8, 34), [ makeMission('qimingclaw-remote-task-ingress', '09:00 远程任务接入', '接收管理端下发任务,进入 /computer/chat 与 ACP 执行链路。', 'completed', todayAt(9, 6), [
{ id: 'browser-portal-check', title: '浏览器工作台巡检', status: 'completed', preferredSkills: ['whitecollar-day-browser-portal-check'], tasks: [makeTask('whitecollar-day-0830-browser-portal-check', 'browser-portal-check', '检查门户首页与入口', 'completed', 'whitecollar-day-browser-portal-check', todayAt(8, 30), todayAt(8, 34))] }, { id: 'ingress', title: '接收管理端任务', status: 'completed', preferredSkills: ['qimingclaw-remote-task-ingress'], tasks: [makeTask('qimingclaw-remote-task-ingress', 'ingress', '解析远程任务 payload', 'completed', 'qimingclaw-remote-task-ingress', todayAt(9, 0), todayAt(9, 6))] },
]), ]),
makeMission('whitecollar-day-0900-browser-inbox-triage', '白领一天 09:00 收件箱分拣', '识别高优先级通知并形成今日待办。', 'completed', todayAt(9, 6), [ makeMission('qimingclaw-acp-run-0930', '09:30 ACP 会话执行', '用 qimingclaw ACP 会话执行本地任务并记录运行事件。', 'completed', todayAt(9, 32), [
{ id: 'browser-inbox-triage', title: '浏览器收件箱分拣', status: 'completed', preferredSkills: ['whitecollar-day-browser-inbox-triage'], tasks: [makeTask('whitecollar-day-0900-browser-inbox-triage', 'browser-inbox-triage', '分拣通知与邮件', 'completed', 'whitecollar-day-browser-inbox-triage', todayAt(9, 0), todayAt(9, 6))] }, { id: 'run-session', title: '创建 ACP 会话', status: 'completed', preferredSkills: ['qimingclaw-acp-session-runner'], tasks: [makeTask('qimingclaw-acp-run-0930', 'run-session', '执行客户端任务', 'completed', 'qimingclaw-acp-session-runner', todayAt(9, 30), todayAt(9, 32))] },
]), ]),
makeMission('whitecollar-day-0930-calendar-brief', '白领一天 09:30 日程简报', '整理会议、回访与汇报节点,形成上午排程。', 'completed', todayAt(9, 32), [ makeMission('qimingclaw-mcp-tools-1030', '10:30 MCP 工具能力投射', '读取当前 MCP 配置、server 状态和工具限制,生成技能库能力项。', 'running', todayAt(10, 35), [
{ id: 'calendar-brief', title: '生成日程简报', status: 'completed', preferredSkills: ['whitecollar-day-calendar-brief'], tasks: [makeTask('whitecollar-day-0930-calendar-brief', 'calendar-brief', '整理今日日程', 'completed', 'whitecollar-day-calendar-brief', todayAt(9, 30), todayAt(9, 32))] }, { id: 'scan-tools', title: '扫描 MCP 工具', status: 'running', preferredSkills: ['qimingclaw-mcp-capability-scan'], tasks: [makeTask('qimingclaw-mcp-tools-1030', 'scan-tools', '整理 MCP 工具清单', 'running', 'qimingclaw-mcp-capability-scan', todayAt(10, 30), null)] },
]), ]),
makeMission('whitecollar-day-1030-browser-crm-followup', '白领一天 10:30 客户跟进', '汇总重点客户情况,生成下一步回访建议。', 'running', todayAt(10, 35), [ makeMission('qimingclaw-approval-review-1130', '11:30 本地审批确认', '把数字员工待确认事项写回 formal approval 表并进入同步队列。', 'approved', todayAt(11, 20), [
{ id: 'browser-crm-followup', title: '浏览器客户跟进', status: 'running', preferredSkills: ['whitecollar-day-browser-crm-followup'], tasks: [makeTask('whitecollar-day-1030-browser-crm-followup', 'browser-crm-followup', '提取客户回访摘要', 'running', 'whitecollar-day-browser-crm-followup', todayAt(10, 30), null)] }, { id: 'approval', title: '处理 approval 决策', status: 'pending', preferredSkills: ['qimingclaw-approval-sync'], tasks: [makeTask('qimingclaw-approval-review-1130', 'approval', '回写 approval 状态', 'pending', 'qimingclaw-approval-sync', null, null)] },
]), ]),
makeMission('whitecollar-day-1130-browser-expense-approval', '白领一天 11:30 费用审批核对', '检查待审批单据并输出异常说明。', 'approved', todayAt(11, 20), [ makeMission('qimingclaw-artifact-1430', '14:30 执行产物整理', '提取 Run/Event payload 中的文件、路径和输出,投射到 artifact 列表。', 'draft', todayAt(14, 10), [
{ id: 'browser-expense-approval', title: '浏览器费用审批核对', status: 'pending', preferredSkills: ['whitecollar-day-browser-expense-approval'], tasks: [makeTask('whitecollar-day-1130-browser-expense-approval', 'browser-expense-approval', '核对费用审批单', 'pending', 'whitecollar-day-browser-expense-approval', null, null)] }, { id: 'artifact', title: '整理执行产物', status: 'pending', preferredSkills: ['qimingclaw-artifact-report'], tasks: [makeTask('qimingclaw-artifact-1430', 'artifact', '生成产物索引', 'pending', 'qimingclaw-artifact-report', null, null)] },
]), ]),
makeMission('whitecollar-day-1330-sales-snapshot', '白领一天 13:30 经营快照', '汇总客户、项目和经营看板,形成午后快照。', 'draft', todayAt(13, 20), [ makeMission('qimingclaw-sync-1630', '16:30 管理端同步诊断', '检查 outbox 失败、退避状态和最近同步尝试。', 'draft', todayAt(16, 10), [
{ id: 'sales-snapshot', title: '生成经营快照', status: 'pending', preferredSkills: ['whitecollar-day-sales-snapshot'], tasks: [makeTask('whitecollar-day-1330-sales-snapshot', 'sales-snapshot', '整理经营快照', 'pending', 'whitecollar-day-sales-snapshot', null, null)] }, { id: 'sync-diagnostics', title: '生成同步诊断', status: 'pending', preferredSkills: ['qimingclaw-sync-diagnostics'], tasks: [makeTask('qimingclaw-sync-1630', 'sync-diagnostics', '导出同步诊断', 'pending', 'qimingclaw-sync-diagnostics', null, null)] },
]), ]),
makeMission('whitecollar-day-1430-report-export', '白领一天 14:30 报表导出', '导出领导汇报所需的简版统计报表。', 'draft', todayAt(14, 10), [ makeMission('qimingclaw-daily-report', '18:00 本地日报生成', '基于 qimingclaw workday 投影生成可下载文本日报。', 'draft', todayAt(17, 10), [
{ id: 'report-export', title: '导出汇报报表', status: 'pending', preferredSkills: ['whitecollar-day-report-export'], tasks: [makeTask('whitecollar-day-1430-report-export', 'report-export', '导出统计报表', 'pending', 'whitecollar-day-report-export', null, null)] }, { id: 'daily-report', title: '生成数字员工日报', status: 'pending', preferredSkills: ['qimingclaw-daily-report'], tasks: [makeTask('qimingclaw-daily-report', 'daily-report', '整理日报文本', 'pending', 'qimingclaw-daily-report', null, null)] },
]),
makeMission('whitecollar-day-1530-browser-knowledge-check', '白领一天 15:30 知识库核查', '核查制度、模板与常见问题资料是否最新。', 'draft', todayAt(15, 15), [
{ id: 'browser-knowledge-check', title: '浏览器知识库核查', status: 'pending', preferredSkills: ['whitecollar-day-browser-knowledge-check'], tasks: [makeTask('whitecollar-day-1530-browser-knowledge-check', 'browser-knowledge-check', '核查知识库资料', 'pending', 'whitecollar-day-browser-knowledge-check', null, null)] },
]),
makeMission('whitecollar-day-1630-task-board-sync', '白领一天 16:30 任务看板同步', '把今日处理结果同步到看板和协同清单。', 'draft', todayAt(16, 10), [
{ id: 'task-board-sync', title: '同步任务看板', status: 'pending', preferredSkills: ['whitecollar-day-task-board-sync'], tasks: [makeTask('whitecollar-day-1630-task-board-sync', 'task-board-sync', '同步任务状态', 'pending', 'whitecollar-day-task-board-sync', null, null)] },
]),
makeMission('whitecollar-day-1730-browser-day-close', '白领一天 17:30 日终收口', '汇总今日成果、风险和明日重点,形成日终总结。', 'draft', todayAt(17, 10), [
{ id: 'task-board-sync', title: '同步任务看板', status: 'pending', preferredSkills: ['whitecollar-day-task-board-sync'], tasks: [makeTask('whitecollar-day-1730-browser-day-close', 'task-board-sync', '同步看板结果', 'pending', 'whitecollar-day-task-board-sync', null, null)] },
{ id: 'browser-day-close', title: '浏览器日终收口', status: 'pending', preferredSkills: ['whitecollar-day-browser-day-close'], tasks: [makeTask('whitecollar-day-1730-browser-day-close', 'browser-day-close', '整理日终收口', 'pending', 'whitecollar-day-browser-day-close', null, null)] },
]), ]),
makeMission('zhihu-hotlist-monitor', '知乎热榜采集', '通过计划模板调用知乎热榜采集技能,导出表格文件并生成当天热点摘要。', 'approved', todayAt(10, 12), [ makeMission('zhihu-hotlist-monitor', '知乎热榜采集', '通过计划模板调用知乎热榜采集技能,导出表格文件并生成当天热点摘要。', 'approved', todayAt(10, 12), [
{ id: 'collect-zhihu', title: '采集知乎热榜', status: 'pending', preferredSkills: ['zhihu-hotlist'], tasks: [makeTask('zhihu-hotlist-monitor', 'collect-zhihu', '采集知乎热榜', 'pending', 'zhihu-hotlist', null, null)] }, { id: 'collect-zhihu', title: '采集知乎热榜', status: 'pending', preferredSkills: ['zhihu-hotlist'], tasks: [makeTask('zhihu-hotlist-monitor', 'collect-zhihu', '采集知乎热榜', 'pending', 'zhihu-hotlist', null, null)] },
@@ -163,7 +145,7 @@ export function buildDemoRuns(tasks: DebugTask[]): DebugRun[] {
return tasks return tasks
.filter((task) => ['completed', 'running'].includes(task.status)) .filter((task) => ['completed', 'running'].includes(task.status))
.map((task, index) => ({ .map((task, index) => ({
run_id: `demo-run-${index + 1}`, run_id: `qimingclaw-fallback-run-${index + 1}`,
task_id: task.task_id, task_id: task.task_id,
plan_id: task.plan_id, plan_id: task.plan_id,
attempt_no: 1, attempt_no: 1,
@@ -177,7 +159,7 @@ export function buildDemoOverview(tasks: DebugTask[]): DashboardOverview {
return { return {
generatedAt: new Date().toISOString(), generatedAt: new Date().toISOString(),
isPartial: true, isPartial: true,
sources: [{ endpoint: 'digital-demo', ok: true, loadedAt: new Date().toISOString() }], sources: [{ endpoint: 'qimingclaw-fallback', ok: true, loadedAt: new Date().toISOString() }],
taskTotals: { taskTotals: {
total: tasks.length, total: tasks.length,
queued: tasks.filter((task) => task.status === 'pending').length, queued: tasks.filter((task) => task.status === 'pending').length,
@@ -215,9 +197,9 @@ export function buildDemoJournalEntries(missions: Mission[]): JournalEntry[] {
return missions return missions
.slice(0, 8) .slice(0, 8)
.map((mission, index) => ({ .map((mission, index) => ({
id: `demo-journal-${index + 1}`, id: `qimingclaw-fallback-journal-${index + 1}`,
kind: mission.status === 'completed' ? 'completed' : mission.status === 'active' || mission.status === 'running' ? 'start' : 'pending_authorization', kind: mission.status === 'completed' ? 'completed' : mission.status === 'active' || mission.status === 'running' ? 'start' : 'pending_authorization',
source: 'digital-demo', source: 'qimingclaw-fallback',
message: `${mission.title}${mission.objective}`, message: `${mission.title}${mission.objective}`,
occurredAt: mission.updatedAt, occurredAt: mission.updatedAt,
planId: mission.id, planId: mission.id,

View File

@@ -13,7 +13,7 @@
console.warn("[qimingclaw] digital employee auth bootstrap skipped", error); console.warn("[qimingclaw] digital employee auth bootstrap skipped", error);
} }
</script> </script>
<script type="module" crossorigin src="./assets/index-Ijt5OOd3.js"></script> <script type="module" crossorigin src="./assets/index-CqNAW7JI.js"></script>
<link rel="stylesheet" crossorigin href="./assets/index-ReBtI0Fy.css"> <link rel="stylesheet" crossorigin href="./assets/index-ReBtI0Fy.css">
</head> </head>
<body> <body>

View File

@@ -453,7 +453,7 @@ crates/agent-electron-client/src/preload/webviewPerfBridge.ts
- `digital_approvals` 会投射为数字员工 workday 的 `decisions`;首页待解决事项按钮会调用本地 `decide_approval` action把处理结果写入 SQLite UI state回写正式 approval 状态并进入 approval outbox同时生成 `digital_workday_decide_approval` runtime event。同步失败 review 只保留在 dashboard/同步诊断中,不作为可审批 workday decision。 - `digital_approvals` 会投射为数字员工 workday 的 `decisions`;首页待解决事项按钮会调用本地 `decide_approval` action把处理结果写入 SQLite UI state回写正式 approval 状态并进入 approval outbox同时生成 `digital_workday_decide_approval` runtime event。同步失败 review 只保留在 dashboard/同步诊断中,不作为可审批 workday decision。
- 任务中心的 `/api/governance/command` 已接入 qimingclaw 兼容层:`create_plan``submit_plan``approve_plan``activate_plan``create_schedule``run_schedule_now` 等命令返回本地可解释结果,其中激活/立即运行会映射到 adapter 的 dispatch/workday 状态。 - 任务中心的 `/api/governance/command` 已接入 qimingclaw 兼容层:`create_plan``submit_plan``approve_plan``activate_plan``create_schedule``run_schedule_now` 等命令返回本地可解释结果,其中激活/立即运行会映射到 adapter 的 dispatch/workday 状态。
- 日报下载不再打开 sgRobot 风格 PDF 后端直链;生成日报后会基于当前 qimingclaw workday 投影在浏览器内导出本地文本日报。 - 日报下载不再打开 sgRobot 风格 PDF 后端直链;生成日报后会基于当前 qimingclaw workday 投影在浏览器内导出本地文本日报。
- 任务中心在加载到 qimingclaw 真实计划时不再混入“白领一天”等 demo supplement只有没有任何真实计划或请求失败时才使用本地示例兜底。 - 任务中心在加载到 qimingclaw 真实计划时不再混入示例 supplement只有没有任何真实计划或请求失败时才使用 qimingclaw 客户端职责语义的本地示例兜底。
- 同步状态通过 bridge 返回最近失败 outbox 明细首页可直接看到实体类型、outbox ID、操作类型、重试次数、失败时间和下次自动重试时间。 - 同步状态通过 bridge 返回最近失败 outbox 明细首页可直接看到实体类型、outbox ID、操作类型、重试次数、失败时间和下次自动重试时间。
- 本地 SQLite 额外记录 `digital_sync_attempts`,每次 outbox 推送成功、失败或部分 ack 缺失都会留下一次尝试历史,默认保留最近 30 天。 - 本地 SQLite 额外记录 `digital_sync_attempts`,每次 outbox 推送成功、失败或部分 ack 缺失都会留下一次尝试历史,默认保留最近 30 天。
- 点击失败 outbox 可打开详情弹窗,查看完整错误、实体 ID、退避状态、最近重试历史并可复制或导出诊断 JSON也可触发手动 `flushSync` 立即重试。若已配置管理端同步地址,详情弹窗可直接打开对应的管理端同步记录深链。 - 点击失败 outbox 可打开详情弹窗,查看完整错误、实体 ID、退避状态、最近重试历史并可复制或导出诊断 JSON也可触发手动 `flushSync` 立即重试。若已配置管理端同步地址,详情弹窗可直接打开对应的管理端同步记录深链。