refactor: 重构项目结构并优化代码
- 删除无用的文件和错误日志 - 创建统一的 imports 模块集中管理依赖 - 重构组件使用新的 imports 方式 - 修复文档路径大小写问题 - 优化类型定义和接口导出 - 更新依赖版本 - 改进错误处理和API配置 - 统一组件导出方式
This commit is contained in:
@@ -8,28 +8,28 @@ import { chromium, Browser, Page, BrowserContext } from 'playwright';
|
||||
import * as fs from 'fs';
|
||||
import * as path from 'path';
|
||||
|
||||
interface ApiSimulatorConfig {
|
||||
export interface ApiSimulatorConfig {
|
||||
headless: boolean;
|
||||
proxy?: string;
|
||||
userDataDir?: string; // 用户数据目录,用于保存登录状态
|
||||
timeout: number;
|
||||
}
|
||||
|
||||
interface ApiRequest {
|
||||
export interface ApiRequest {
|
||||
method: 'GET' | 'POST' | 'PUT' | 'DELETE';
|
||||
endpoint: string; // 模拟的API端点,如 'orders', 'products'
|
||||
params: Record<string, any>;
|
||||
platform: string; // 平台类型:tiktok, shopee, amazon等
|
||||
}
|
||||
|
||||
interface ApiResponse {
|
||||
export interface ApiResponse {
|
||||
success: boolean;
|
||||
data?: any;
|
||||
error?: string;
|
||||
timestamp: number;
|
||||
}
|
||||
|
||||
interface LoginCredentials {
|
||||
export interface LoginCredentials {
|
||||
username: string;
|
||||
password: string;
|
||||
platform: string;
|
||||
@@ -44,8 +44,6 @@ export class ApiSimulator {
|
||||
|
||||
constructor(config: ApiSimulatorConfig) {
|
||||
this.config = {
|
||||
headless: true,
|
||||
timeout: 30000,
|
||||
...config
|
||||
};
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@ import { ApiSimulator, LoginCredentials, ApiRequest } from './api-simulator';
|
||||
import { PlatformManager, PlatformAdapter } from './platform-adapter';
|
||||
import { TaskScheduler, TaskConfig, WorkflowConfig } from './task-scheduler';
|
||||
|
||||
interface EnhancedClientConfig {
|
||||
export interface EnhancedClientConfig {
|
||||
port: number;
|
||||
headless: boolean;
|
||||
proxy?: string;
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
|
||||
import { ApiSimulator, ApiRequest, ApiResponse, LoginCredentials } from './api-simulator';
|
||||
|
||||
interface PlatformAdapter {
|
||||
export interface PlatformAdapter {
|
||||
platform: string;
|
||||
|
||||
// 基础操作
|
||||
@@ -70,6 +70,24 @@ abstract class BasePlatformAdapter implements PlatformAdapter {
|
||||
abstract syncOrders(): Promise<ApiResponse>;
|
||||
abstract syncProducts(): Promise<ApiResponse>;
|
||||
abstract batchUpdatePrices(updates: Array<{productId: string, price: number}>): Promise<ApiResponse>;
|
||||
|
||||
async getStatus(): Promise<{
|
||||
connected: boolean;
|
||||
lastActivity: number;
|
||||
errorCount: number;
|
||||
successRate: number;
|
||||
}> {
|
||||
return {
|
||||
connected: this.isLoggedIn(),
|
||||
lastActivity: Date.now(),
|
||||
errorCount: 0,
|
||||
successRate: 100
|
||||
};
|
||||
}
|
||||
|
||||
async handleError(error: Error): Promise<void> {
|
||||
console.error(`[${this.platform}] 错误处理: ${error.message}`);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -470,10 +470,10 @@ export class RemoteDesktopService {
|
||||
}
|
||||
|
||||
try {
|
||||
const result = await session.page.evaluate((script, args) => {
|
||||
const result = await session.page.evaluate(({ script, args }) => {
|
||||
// 在页面上下文中执行脚本
|
||||
return eval(`(${script})`)(...args);
|
||||
}, script, args);
|
||||
}, { script, args });
|
||||
|
||||
session.lastActivity = new Date();
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
import { PlatformManager } from './platform-adapter';
|
||||
import { ApiResponse } from './api-simulator';
|
||||
|
||||
interface TaskConfig {
|
||||
export interface TaskConfig {
|
||||
id: string;
|
||||
name: string;
|
||||
description?: string;
|
||||
@@ -49,7 +49,7 @@ interface WorkflowStep {
|
||||
condition?: (result: ApiResponse) => boolean; // 条件判断
|
||||
}
|
||||
|
||||
interface WorkflowConfig {
|
||||
export interface WorkflowConfig {
|
||||
id: string;
|
||||
name: string;
|
||||
steps: WorkflowStep[];
|
||||
|
||||
@@ -111,7 +111,7 @@ export class WebRemoteService {
|
||||
success: false,
|
||||
type: 'error',
|
||||
error: error instanceof Error ? error.message : '命令处理失败',
|
||||
sessionId: command?.sessionId || 'unknown',
|
||||
sessionId: 'unknown',
|
||||
timestamp: Date.now()
|
||||
}));
|
||||
}
|
||||
@@ -423,9 +423,9 @@ export class WebRemoteService {
|
||||
}
|
||||
}, selector);
|
||||
} else {
|
||||
await session.page.evaluate((scrollX, scrollY) => {
|
||||
await session.page.evaluate(({ scrollX, scrollY }) => {
|
||||
window.scrollTo(scrollX, scrollY);
|
||||
}, x || 0, y || 0);
|
||||
}, { scrollX: x || 0, scrollY: y || 0 });
|
||||
}
|
||||
|
||||
session.lastActivity = new Date();
|
||||
@@ -481,11 +481,11 @@ export class WebRemoteService {
|
||||
const { script, args = [] } = command.data;
|
||||
|
||||
try {
|
||||
const result = await session.page.evaluate((evalScript, evalArgs) => {
|
||||
const result = await session.page.evaluate(({ evalScript, evalArgs }) => {
|
||||
// 在页面上下文中执行脚本
|
||||
const func = new Function('return ' + evalScript)();
|
||||
return func(...evalArgs);
|
||||
}, script, args);
|
||||
}, { evalScript: script, evalArgs: args });
|
||||
|
||||
session.lastActivity = new Date();
|
||||
|
||||
@@ -566,9 +566,9 @@ export class WebRemoteService {
|
||||
timestamp: Date.now()
|
||||
};
|
||||
} else if (action === 'set') {
|
||||
await session.page.evaluate((storageKey, storageValue) => {
|
||||
await session.page.evaluate(({ storageKey, storageValue }) => {
|
||||
localStorage.setItem(storageKey, storageValue);
|
||||
}, key, value);
|
||||
}, { storageKey: key, storageValue: value });
|
||||
|
||||
return {
|
||||
success: true,
|
||||
|
||||
Reference in New Issue
Block a user