feat(13-06): TenderDetail renders all cross-source links

Tender.sources[] added to the API client type (sourcePortal, sourceUrl,
sourceNoticeId). TenderDetail now renders one link per TenderSource
with a German portal label (DÖE/tender24/DTVP/...), falling back to
the existing single sourceUrl block when sources is missing or empty
(older responses, single-source tenders).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-07-23 08:56:06 +02:00
parent 166194fa04
commit bf61316500
3 changed files with 146 additions and 7 deletions
+12
View File
@@ -55,6 +55,18 @@ export interface Tender {
status: string;
sourceUrl: string | null;
publishedAt: string;
/**
* Cross-source-dedup links (13-06, SCHEMA-03, D-03): all TenderSource
* rows for this tender, one per portal it was found on. Optional —
* only `getTender` (detail) populates it; `listTenders` rows and
* older responses may omit it entirely, so callers must fall back to
* the single `sourceUrl` field when it's missing/empty.
*/
sources?: {
sourcePortal: string;
sourceUrl: string | null;
sourceNoticeId: string;
}[];
}
/** Response shape of GET /modules/tender-radar. */