auto-account-machine/src/automation-framework/core/base-action.js
2025-11-18 20:51:45 +08:00

56 lines
1.3 KiB
JavaScript

/**
* 动作基类
*/
class BaseAction {
constructor(context, config) {
this.context = context;
this.config = config;
this.page = context.page;
this.logger = context.logger;
}
/**
* 执行动作(子类必须实现)
*/
async execute() {
throw new Error('子类必须实现 execute 方法');
}
/**
* 替换配置中的变量
* @param {string} value - 包含变量的字符串 (如 "{{account.email}}")
* @returns {string} - 替换后的值
*/
replaceVariables(value) {
if (typeof value !== 'string') return value;
return value.replace(/\{\{(.+?)\}\}/g, (match, path) => {
const keys = path.trim().split('.');
let result = this.context.data;
for (const key of keys) {
if (result && typeof result === 'object') {
result = result[key];
} else {
return match; // 无法解析,返回原始值
}
}
return result !== undefined ? result : match;
});
}
/**
* 记录日志
*/
log(level, message) {
if (this.logger && this.logger[level]) {
this.logger[level](this.context.siteName || 'Automation', message);
} else {
console.log(`[${level.toUpperCase()}] ${message}`);
}
}
}
module.exports = BaseAction;