diff --git a/backend/services/trading-service/src/application/schedulers/burn.scheduler.ts b/backend/services/trading-service/src/application/schedulers/burn.scheduler.ts index e9788be9..af88014e 100644 --- a/backend/services/trading-service/src/application/schedulers/burn.scheduler.ts +++ b/backend/services/trading-service/src/application/schedulers/burn.scheduler.ts @@ -27,30 +27,25 @@ export class BurnScheduler implements OnModuleInit { } /** - * 每分钟执行销毁 + * 每分钟执行销毁并创建价格快照 * 每分钟销毁量 = 100亿 ÷ (365×4×1440) = 4756.468797564687 进黑洞 + * + * 注意:销毁和快照必须在同一个任务中顺序执行, + * 确保快照总是捕获销毁后的最新价格,避免K线出现价格不变的情况 */ @Cron(CronExpression.EVERY_MINUTE) - async executeMinuteBurn(): Promise { + async executeMinuteBurnAndSnapshot(): Promise { try { + // 1. 先执行销毁 const burnAmount = await this.burnService.executeMinuteBurn(); if (!burnAmount.isZero()) { this.logger.debug(`Minute burn completed: ${burnAmount.toFixed(8)}`); } - } catch (error) { - this.logger.error('Failed to execute minute burn', error); - } - } - /** - * 每分钟创建价格快照 - */ - @Cron(CronExpression.EVERY_MINUTE) - async createPriceSnapshot(): Promise { - try { + // 2. 销毁完成后立即创建价格快照 await this.priceService.createSnapshot(); } catch (error) { - this.logger.error('Failed to create price snapshot', error); + this.logger.error('Failed to execute minute burn and snapshot', error); } }