refactor(web): 强制同步按钮直调竞品 sync API,移除自有账号执行身份依赖
douyin-release-gate / verify (push) Failing after 3m43s
douyin-release-gate / verify (push) Failing after 3m43s
竞品同步已改用匿名浏览器,前端不再自动挑选自有账号作为执行身份
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user