feat(monitoring): decouple AI platforms from media_platforms and expand catalog to 6

Add ai_platforms table + shared catalog (yuanbao/kimi/wenxin/deepseek/doubao/qwen),
drop FKs from platform_accounts and desktop_tasks to media_platforms, and wire
target_account_id + platform into DesktopTaskEvent so the desktop runtime no
longer has to infer them from local state. Desktop client gains generic AI page
detection for binding, drops stale-business-date monitor tasks at the edge, and
refactors AccountsView/AiPlatformsView around the shared catalog. Admin tracking
view surfaces per-platform sampling status cards.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-04-20 15:40:18 +08:00
parent 25dad49ed3
commit 09295d11a1
21 changed files with 2073 additions and 843 deletions
@@ -42,7 +42,7 @@ function presentClientError(kind: ClientActionKind, error: unknown): ClientError
? "账号绑定失败"
: kind === "unbind-account"
? "账号解绑失败"
: "打开创作台失败",
: "打开台失败",
);
if (message === "desktop_account_bind_window_closed") {
@@ -77,7 +77,7 @@ function presentClientError(kind: ClientActionKind, error: unknown): ClientError
};
}
if (message.startsWith("desktop_publish_platform_not_supported:")) {
if (message.startsWith("desktop_platform_not_supported:")) {
const platformId = message.split(":")[1] || "当前平台";
return {
tone: "error",
@@ -105,7 +105,7 @@ function presentClientError(kind: ClientActionKind, error: unknown): ClientError
if (kind === "open-console") {
return {
tone: "error",
title: "打开创作台失败",
title: "打开台失败",
content: message,
};
}