feat(media-supply): add media resource supply marketplace
Desktop Client Build / Resolve Build Metadata (push) Successful in 43s
Frontend CI / Frontend (push) Successful in 3m49s
Backend CI / Backend (push) Failing after 7m10s
Desktop Client Build / Build Desktop Client (push) Successful in 23m4s
Desktop Client Build / Publish Client Artifacts to NAS (push) Successful in 28s
Desktop Client Build / Resolve Build Metadata (push) Successful in 43s
Frontend CI / Frontend (push) Successful in 3m49s
Backend CI / Backend (push) Failing after 7m10s
Desktop Client Build / Build Desktop Client (push) Successful in 23m4s
Desktop Client Build / Publish Client Artifacts to NAS (push) Successful in 28s
Introduce an end-to-end media-supply feature: tenant-side resource sync service/worker backed by a Meijiequan supplier client, ops-side management APIs, and admin/ops web views for resources, orders, favorites and submission. Adds a shared digitocr helper, MediaSupply config blocks for tenant and ops, shared types, and migrations for supplier media resources, price overrides, customer visibility and order refunds. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -302,12 +302,12 @@ function summaryForTask(
|
||||
}
|
||||
return '文章已成功发送到目标平台。'
|
||||
case 'failed':
|
||||
return '本次发送失败,请检查账号状态或平台提示后重新创建发布。'
|
||||
return '本次发送失败,请检查账号状态或平台提示后重新提交发布。'
|
||||
case 'aborted':
|
||||
return '任务已被取消,请检查原因后重新创建发布。'
|
||||
return '任务已被取消,请检查原因后重新提交发布。'
|
||||
case 'unknown':
|
||||
default:
|
||||
return '发送结果异常,已按失败处理,请检查平台侧结果后重新创建发布。'
|
||||
return '发送结果异常,已按失败处理,请检查平台侧结果后重新提交发布。'
|
||||
}
|
||||
}
|
||||
|
||||
@@ -487,8 +487,11 @@ async function retryTask(record: PublishTaskItem) {
|
||||
const result = await window.desktopBridge.app.retryPublishTask(record.id)
|
||||
const created = result.created_task_ids.length
|
||||
const existing = result.existing_task_ids.length
|
||||
const requeued = result.requeued_task_ids?.length ?? 0
|
||||
if (created > 0) {
|
||||
notifySuccess(created === 1 ? '已重新创建发布任务' : `已重新创建 ${created} 个发布任务`)
|
||||
notifySuccess(created === 1 ? '已创建新的发布任务' : `已创建 ${created} 个新的发布任务`)
|
||||
} else if (requeued > 0) {
|
||||
notifySuccess(requeued === 1 ? '已重新提交发布任务' : `已重新提交 ${requeued} 个发布任务`)
|
||||
} else if (existing > 0) {
|
||||
if (record.status === 'unknown') {
|
||||
notifyActionError('原任务结果未知且已有发布记录,可能已成功,请先核实平台侧结果。')
|
||||
@@ -501,8 +504,8 @@ async function retryTask(record: PublishTaskItem) {
|
||||
await refreshTasks(1)
|
||||
} catch (err) {
|
||||
notifyActionError(
|
||||
normalizeTaskErrorMessage(unwrapClientErrorMessage(err, '重新创建发布任务失败')) ??
|
||||
'重新创建发布任务失败',
|
||||
normalizeTaskErrorMessage(unwrapClientErrorMessage(err, '重新提交发布任务失败')) ??
|
||||
'重新提交发布任务失败',
|
||||
)
|
||||
} finally {
|
||||
retryingTaskId.value = null
|
||||
@@ -882,12 +885,12 @@ const tableScroll = { x: 1080 } as const
|
||||
<template #icon><DesktopOutlined /></template>
|
||||
</a-button>
|
||||
</a-tooltip>
|
||||
<a-tooltip v-if="canRetryTask(record)" title="重新创建发布任务" placement="top">
|
||||
<a-tooltip v-if="canRetryTask(record)" title="重新提交发布任务" placement="top">
|
||||
<a-button
|
||||
type="text"
|
||||
class="icon-action-btn"
|
||||
:loading="retryingTaskId === record.id"
|
||||
:aria-label="`重新创建发布任务:${record.title}`"
|
||||
:aria-label="`重新提交发布任务:${record.title}`"
|
||||
@click.stop="retryTask(record)"
|
||||
>
|
||||
<template #icon><RetweetOutlined /></template>
|
||||
|
||||
Reference in New Issue
Block a user