40 lines
1.0 KiB
JavaScript
40 lines
1.0 KiB
JavaScript
import { crawl_run_record } from '../models/index.js';
|
|
import { safe_json_stringify } from './json_utils.js';
|
|
import { invoke_extension_action } from './puppeteer_runner.js';
|
|
import { persist_amazon_result } from './amazon_persist.js';
|
|
|
|
export async function execute_action_and_record(params) {
|
|
const { action_name, action_payload, source } = params;
|
|
|
|
const request_payload = safe_json_stringify(action_payload || {});
|
|
|
|
let ok = false;
|
|
let result_payload = null;
|
|
let error_message = null;
|
|
|
|
try {
|
|
const result = await invoke_extension_action(action_name, action_payload || {});
|
|
|
|
ok = true;
|
|
result_payload = safe_json_stringify(result);
|
|
|
|
// 按 stage 自动入库(不影响原始 run_record 记录)
|
|
await persist_amazon_result(result);
|
|
|
|
return result;
|
|
} catch (err) {
|
|
ok = false;
|
|
error_message = (err && err.message) || String(err);
|
|
throw err;
|
|
} finally {
|
|
await crawl_run_record.create({
|
|
action_name,
|
|
request_payload,
|
|
ok,
|
|
result_payload,
|
|
error_message,
|
|
source
|
|
});
|
|
}
|
|
}
|