feat(10-05): wire TendersController — global read + admin source-config

- GET / and GET /🆔 paginated global Tender catalog, @UseModule('tender-radar')-gated, never row-scoped by tenant id
- GET/PUT /source-config: @Roles(ADMIN, SUPER_ADMIN)-guarded singleton doe-opendata config
- PUT /source-config live-applies pollIntervalMin/isActive to TenderSchedulerService (setInterval/stopJob, no tenant arg) — INGEST-06
- Registered TendersController in TendersModule.controllers
This commit is contained in:
2026-07-21 11:17:13 +02:00
parent f6e636c37d
commit 7b9b6b8c1c
2 changed files with 142 additions and 4 deletions
+7 -4
View File
@@ -7,6 +7,7 @@ import { seedTendersModule } from './tenders.seed';
import { TenderIngestionService } from './tender-ingestion.service';
import { TenderNormalizerService } from './tender-normalizer.service';
import { TenderSchedulerService } from './tender-scheduler.service';
import { TendersController } from './tenders.controller';
/**
* NestJS module for the Ausschreibungs-Radar feature.
@@ -14,10 +15,12 @@ import { TenderSchedulerService } from './tender-scheduler.service';
* Wave 2 registered the module in the marketplace and seeded the
* singleton DÖE poll config so the shared poll is admin-drivable. Plan 03
* added the DÖE source adapter + normalizer (parse+map core of
* INGEST-01/SCHEMA-01). This plan (04) adds ingestion orchestration
* INGEST-01/SCHEMA-01). Plan 04 added ingestion orchestration
* (TenderIngestionService: day-cursor gate, SCHEMA-02 change detection,
* D-05 retention) and the shared global scheduler. Controller/DTO wiring
* is added in Plan 05.
* D-05 retention) and the shared global scheduler. This plan (05) wires
* TendersController: the global (ModuleGuard-gated, not tenant-scoped)
* read surface plus the Roles-guarded admin source-config routes that
* live-apply to TenderSchedulerService.
*
* PrismaModule is global (no explicit import needed).
*
@@ -26,7 +29,7 @@ import { TenderSchedulerService } from './tender-scheduler.service';
*/
@Module({
imports: [ModuleRegistryModule],
controllers: [],
controllers: [TendersController],
providers: [
DoeOpenDataAdapter,
TenderNormalizerService,