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
@@ -1,7 +1,7 @@
import { Modal } from "ant-design-vue";
type ClientErrorTone = "error" | "warning";
type ClientActionKind = "bind-account" | "open-console";
type ClientActionKind = "bind-account" | "open-console" | "unbind-account";
interface ClientErrorPresentation {
tone: ClientErrorTone;
@@ -40,7 +40,11 @@ export function unwrapClientErrorMessage(error: unknown, fallback: string): stri
function presentClientError(kind: ClientActionKind, error: unknown): ClientErrorPresentation {
const message = unwrapClientErrorMessage(
error,
kind === "bind-account" ? "账号绑定失败" : "打开创作台失败",
kind === "bind-account"
? "账号绑定失败"
: kind === "unbind-account"
? "账号解绑失败"
: "打开创作台失败",
);
if (message === "desktop_account_bind_window_closed") {
@@ -76,6 +80,22 @@ function presentClientError(kind: ClientActionKind, error: unknown): ClientError
};
}
if (message === "desktop_account_sync_conflict") {
return {
tone: "warning",
title: kind === "unbind-account" ? "账号状态已变化" : "账号状态已更新",
content: "当前账号状态刚刚发生了变化。请先刷新列表,再重试这次操作。",
};
}
if (message === "desktop_account_delete_failed") {
return {
tone: "error",
title: "账号解绑失败",
content: "服务端解绑没有成功完成,请稍后重试。",
};
}
if (kind === "open-console") {
return {
tone: "error",
@@ -84,6 +104,14 @@ function presentClientError(kind: ClientActionKind, error: unknown): ClientError
};
}
if (kind === "unbind-account") {
return {
tone: "error",
title: "账号解绑失败",
content: message,
};
}
return {
tone: "error",
title: "账号绑定失败",