refactor: 重构项目结构并优化代码

- 删除无用的文件和错误日志
- 创建统一的 imports 模块集中管理依赖
- 重构组件使用新的 imports 方式
- 修复文档路径大小写问题
- 优化类型定义和接口导出
- 更新依赖版本
- 改进错误处理和API配置
- 统一组件导出方式
This commit is contained in:
2026-03-27 16:56:06 +08:00
parent 2748456d8a
commit 22308fe042
337 changed files with 37060 additions and 57483 deletions

View File

@@ -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
};
}

View File

@@ -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;

View File

@@ -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}`);
}
}
/**

View File

@@ -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();

View File

@@ -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[];

View File

@@ -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,