feat(desktop): drop parked review flow, add publish management

SaaS 侧人工审核后才创建 publish job,desktop 不再做二次审核:移除
manual/waiting_user/parked/from_parked 状态机与 LeaseFromParked 查询,
desktop client 只执行发布并新增"发布管理"页(待发布队列 / 历史 / 再次
发送)。同时抽离 @geo/publisher-platforms 共享适配器包、新增 Redis-based
desktop_presence 与 publish_record_support,刷新 admin-web 发布弹窗与
媒体库;plan A / spec 文档同步口径。
This commit is contained in:
2026-04-20 09:52:48 +08:00
parent b16e9f0bd1
commit a617d39a4a
93 changed files with 5519 additions and 3594 deletions
+17 -5
View File
@@ -1,5 +1,11 @@
import { contextBridge, ipcRenderer } from "electron/renderer";
import type { DesktopAccountInfo, DesktopRuntimeSessionSyncRequest } from "@geo/shared-types";
import type {
CreatePublishJobResponse,
DesktopAccountInfo,
DesktopPublishTaskListResponse,
DesktopRuntimeSessionSyncRequest,
ListDesktopPublishTasksParams,
} from "@geo/shared-types";
import type { DesktopRuntimeSnapshot } from "../renderer/types";
const desktopBridge = {
@@ -9,6 +15,8 @@ const desktopBridge = {
ipcRenderer.invoke("desktop:runtime-snapshot") as Promise<DesktopRuntimeSnapshot>,
bindPublishAccount: (platformId: string) =>
ipcRenderer.invoke("desktop:bind-publish-account", platformId) as Promise<DesktopAccountInfo>,
refreshRuntimeAccounts: () =>
ipcRenderer.invoke("desktop:refresh-runtime-accounts") as Promise<null>,
openPublishAccountConsole: (account: {
id: string;
platform: string;
@@ -16,12 +24,16 @@ const desktopBridge = {
displayName: string;
}) =>
ipcRenderer.invoke("desktop:open-publish-account-console", account) as Promise<null>,
openTaskReview: (taskId: string) =>
ipcRenderer.invoke("desktop:task-open-review", taskId) as Promise<null>,
resolveParkedTask: (taskId: string, status: "succeeded" | "failed" | "unknown") =>
ipcRenderer.invoke("desktop:task-resolve-parked", taskId, status) as Promise<null>,
unbindPublishAccount: (accountId: string, syncVersion: number) =>
ipcRenderer.invoke("desktop:unbind-publish-account", accountId, syncVersion) as Promise<null>,
listPublishTasks: (params?: ListDesktopPublishTasksParams) =>
ipcRenderer.invoke("desktop:list-publish-tasks", params) as Promise<DesktopPublishTaskListResponse>,
retryPublishTask: (taskId: string) =>
ipcRenderer.invoke("desktop:retry-publish-task", taskId) as Promise<CreatePublishJobResponse>,
syncRuntimeSession: (session: DesktopRuntimeSessionSyncRequest | null) =>
ipcRenderer.invoke("desktop:runtime-session-sync", session) as Promise<null>,
releaseRuntimeSession: (revoke?: boolean) =>
ipcRenderer.invoke("desktop:runtime-session-release", revoke) as Promise<null>,
},
};