feat: 新增多模块功能与服务实现
新增广告计划、用户资产、B2B交易、合规规则等核心模型 实现爬虫工作器、贸易服务、现金流预测等业务服务 添加RBAC权限测试、压力测试等测试用例 完善扩展程序的消息处理与内容脚本功能 重构应用入口与文档生成器 更新项目规则与业务闭环分析文档
This commit is contained in:
71
extension/src/background/index.ts
Normal file
71
extension/src/background/index.ts
Normal file
@@ -0,0 +1,71 @@
|
||||
import { OrderCollector } from './OrderCollector';
|
||||
import { ReturnSync } from './ReturnSync';
|
||||
import { RefundQuery } from './RefundQuery';
|
||||
import { MessageHandler } from './MessageHandler';
|
||||
import { Logger } from '../utils/Logger';
|
||||
|
||||
const logger = new Logger('Background');
|
||||
|
||||
const orderCollector = new OrderCollector();
|
||||
const returnSync = new ReturnSync();
|
||||
const refundQuery = new RefundQuery();
|
||||
const messageHandler = new MessageHandler(orderCollector, returnSync, refundQuery);
|
||||
|
||||
chrome.runtime.onInstalled.addListener((details) => {
|
||||
logger.info('Extension installed', { reason: details.reason });
|
||||
|
||||
if (details.reason === 'install') {
|
||||
chrome.storage.local.set({
|
||||
initialized: true,
|
||||
config: {
|
||||
apiEndpoint: 'http://localhost:3003',
|
||||
syncInterval: 300000,
|
||||
maxRetries: 3,
|
||||
},
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
chrome.runtime.onMessage.addListener((message, sender, sendResponse) => {
|
||||
logger.info('Message received', { type: message.type, sender: sender.tab?.id });
|
||||
|
||||
messageHandler.handle(message, sender)
|
||||
.then((result) => sendResponse({ success: true, data: result }))
|
||||
.catch((error) => {
|
||||
logger.error('Message handler error', { error: error.message });
|
||||
sendResponse({ success: false, error: error.message });
|
||||
});
|
||||
|
||||
return true;
|
||||
});
|
||||
|
||||
chrome.alarms.onAlarm.addListener(async (alarm) => {
|
||||
logger.info('Alarm triggered', { name: alarm.name });
|
||||
|
||||
switch (alarm.name) {
|
||||
case 'orderSync':
|
||||
await orderCollector.syncAllShops();
|
||||
break;
|
||||
case 'returnSync':
|
||||
await returnSync.syncAllReturns();
|
||||
break;
|
||||
case 'refundQuery':
|
||||
await refundQuery.queryAllRefunds();
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
async function setupAlarms() {
|
||||
const config = await chrome.storage.local.get('config');
|
||||
const syncInterval = config.config?.syncInterval || 300000;
|
||||
|
||||
chrome.alarms.create('orderSync', { periodInMinutes: syncInterval / 60000 });
|
||||
chrome.alarms.create('returnSync', { periodInMinutes: (syncInterval * 2) / 60000 });
|
||||
chrome.alarms.create('refundQuery', { periodInMinutes: (syncInterval * 3) / 60000 });
|
||||
|
||||
logger.info('Alarms setup complete', { syncInterval });
|
||||
}
|
||||
|
||||
setupAlarms();
|
||||
|
||||
export { orderCollector, returnSync, refundQuery };
|
||||
Reference in New Issue
Block a user