feat: P2-15 cron-based DingTalk/WeCom sync with logging and incremental sync

- Add @nestjs/schedule dependency
- Create SyncLog entity (platform, syncType, status, recordsCount, errorMessage, timestamps)
- Create SyncState entity for tracking lastSyncAt per platform
- SyncService with @Cron('0 2 * * *') daily scheduled sync
- Incremental sync: tracks last_sync_at per platform, passes to integration APIs
- Full/incremental mode determined by existence of prior sync
- SyncController: POST /sync/trigger (manual), GET /sync/logs (history)
- Register SyncModule in AppModule with ScheduleModule
This commit is contained in:
2026-07-05 20:48:43 +08:00
parent ab4adf1174
commit 09580e4a4e
8 changed files with 263 additions and 0 deletions

View File

@@ -0,0 +1,17 @@
import { Module } from '@nestjs/common';
import { ScheduleModule } from '@nestjs/schedule';
import { TypeOrmModule } from '@nestjs/typeorm';
import { SyncLog, SyncState } from '../entities';
import { SyncService } from './sync.service';
import { SyncController } from './sync.controller';
@Module({
imports: [
ScheduleModule.forRoot(),
TypeOrmModule.forFeature([SyncLog, SyncState]),
],
controllers: [SyncController],
providers: [SyncService],
exports: [SyncService],
})
export class SyncModule {}