refactor(web): 强制同步按钮直调竞品 sync API,移除自有账号执行身份依赖
douyin-release-gate / verify (push) Failing after 3m43s

竞品同步已改用匿名浏览器,前端不再自动挑选自有账号作为执行身份
This commit is contained in:
2026-09-27 15:43:08 +08:00
parent 221ed65e32
commit d1aae0a60f
3 changed files with 10 additions and 21 deletions
@@ -22,7 +22,7 @@ import {
message,
} from 'antd';
import { CloudUploadOutlined, ReloadOutlined } from '@ant-design/icons';
import { getList, remove, creatorAction, creatorUpdate, syncCompetitorAuto } from '@/services/api';
import { getList, remove, creatorAction, creatorUpdate } from '@/services/api';
import { conflictMessage, dateTime, platformLabel } from '@/utils/helpers';
interface CompetitorRow {
@@ -85,14 +85,15 @@ export default function MonitoringAccountList() {
load();
}, [load]);
// 强制同步:后端用临时匿名浏览器采集公开作品,无需自有账号身份。
async function syncCompetitor(competitor: CompetitorRow) {
setActionBusy(competitor.id);
try {
await syncCompetitorAuto(competitor);
messageApi.success('监测账号同步任务已提交。');
await creatorAction(`/creator/competitors/${encodeURIComponent(competitor.id)}/sync`);
messageApi.success('强制同步已执行。');
await load();
} catch (actionError) {
messageApi.error(conflictMessage(actionError, '监测账号同步失败'));
messageApi.error(conflictMessage(actionError, '强制同步失败'));
} finally {
setActionBusy('');
}
@@ -24,7 +24,7 @@ import {
message,
} from 'antd';
import { CommentOutlined, LikeOutlined, ReloadOutlined, ShareAltOutlined } from '@ant-design/icons';
import { creatorAction, creatorGet, getOne, getList, syncCompetitorAuto } from '@/services/api';
import { creatorAction, creatorGet, getOne, getList } from '@/services/api';
import { conflictMessage, dateTime, platformLabel } from '@/utils/helpers';
import { usePageActions, usePageInfo } from '@/components/PageActions';
@@ -137,13 +137,14 @@ export default function Page() {
<Button
disabled={actionBusy || !competitor.enabled}
onClick={async () => {
// 强制同步:后端用临时匿名浏览器采集公开作品,无需自有账号身份。
setActionBusy(true);
try {
await syncCompetitorAuto(competitor);
messageApi.success('监测账号同步任务已提交。');
await creatorAction(`/creator/competitors/${encodeURIComponent(competitor.id)}/sync`);
messageApi.success('强制同步已执行。');
await loadCompetitor();
} catch (actionError) {
messageApi.error(conflictMessage(actionError, '监测账号同步失败'));
messageApi.error(conflictMessage(actionError, '强制同步失败'));
} finally {
setActionBusy(false);
}
-13
View File
@@ -1,7 +1,6 @@
// 领域 API 层:资源路径与语义逐一对照 web.archived/src/shared/api/dataProvider.js。
// 全部经由 requestErrorConfig.request(Basic Auth + 401 全局登出)。
import { AUTH_STORAGE_KEY, RequestError, jsonOptions, request, unauthorized } from '@/requestErrorConfig';
import { isCollectionAccount, platformLabel } from '@/utils/helpers';
export const resourcePaths = {
browsers: '/browsers',
@@ -150,18 +149,6 @@ export function creatorGet(path: string) {
return request(path);
}
// 监控账号同步:自动挑选可用的自有采集账号(登录且授权)作为执行身份。
export async function syncCompetitorAuto(competitor: { id: string; platform: string }): Promise<void> {
const result = await getList({ resource: 'creator-accounts' });
const account = (result.data ?? []).find(
(candidate: any) => candidate.platform === competitor.platform && isCollectionAccount(candidate),
);
if (!account) {
throw new Error(`没有可用于同步${platformLabel(competitor.platform)}监控账号的已登录自有账号。`);
}
await creatorAction(`/creator/competitors/${encodeURIComponent(competitor.id)}/sync`, { account_id: account.id });
}
export function creatorUpdate(path: string, data: unknown) {
return request(path, jsonOptions('PUT', data));
}