You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
3.5 KiB
3.5 KiB
TED Notice URL Feature
Übersicht
Jedes Dokument in der Datenbank hat jetzt eine automatisch generierte notice_url Spalte, die direkt auf die TED-Webseite verlinkt.
Format
https://ted.europa.eu/en/notice/-/detail/{publication_id ohne führende Nullen}
Beispiel:
publication_id:00786665-2025notice_url:https://ted.europa.eu/en/notice/-/detail/786665-2025
Automatische Generierung
Die URL wird automatisch beim Speichern eines Dokuments generiert:
@PrePersist
@PreUpdate
private void generateNoticeUrl() {
if (publicationId != null && !publicationId.isEmpty()) {
String cleanId = publicationId.replaceFirst("^0+", "");
this.noticeUrl = "https://ted.europa.eu/en/notice/-/detail/" + cleanId;
}
}
Datenbankstruktur
Spalte
ALTER TABLE ted.procurement_document
ADD COLUMN notice_url VARCHAR(255);
CREATE INDEX idx_doc_notice_url ON ted.procurement_document(notice_url);
Existierende Datensätze
URLs für existierende Datensätze werden automatisch generiert:
UPDATE ted.procurement_document
SET notice_url = 'https://ted.europa.eu/en/notice/-/detail/' ||
REGEXP_REPLACE(publication_id, '^0+', '')
WHERE publication_id IS NOT NULL
AND notice_url IS NULL;
Verwendung
Repository-Abfrage
// Nach URL suchen
Optional<ProcurementDocument> doc = repository.findByNoticeUrl(
"https://ted.europa.eu/en/notice/-/detail/786665-2025"
);
Entity-Zugriff
ProcurementDocument doc = new ProcurementDocument();
doc.setPublicationId("00786665-2025");
// notice_url wird automatisch beim Speichern generiert
repository.save(doc);
// URL abrufen
String url = doc.getNoticeUrl();
// "https://ted.europa.eu/en/notice/-/detail/786665-2025"
REST API Beispiel
{
"id": "20fde305-844b-46b7-bb72-93e86381978d",
"publicationId": "00786665-2025",
"noticeUrl": "https://ted.europa.eu/en/notice/-/detail/786665-2025",
"buyerName": "Example Organization",
"projectTitle": "Construction Services"
}
Vorteile
✅ Direkte Verlinkung zur offiziellen TED-Webseite ✅ Automatische Generierung - keine manuelle Pflege nötig ✅ Indiziert für schnelle Suche ✅ Konsistentes Format - einheitliche URLs ✅ Integration in REST API und Such-Ergebnisse
SQL-Abfragen
URL für Publication ID generieren
SELECT
publication_id,
'https://ted.europa.eu/en/notice/-/detail/' ||
REGEXP_REPLACE(publication_id, '^0+', '') AS notice_url
FROM ted.procurement_document
WHERE publication_id = '00786665-2025';
Alle URLs anzeigen
SELECT
publication_id,
notice_url,
buyer_name,
project_title
FROM ted.procurement_document
WHERE notice_url IS NOT NULL
ORDER BY created_at DESC
LIMIT 10;
Nach URL-Pattern suchen
SELECT *
FROM ted.procurement_document
WHERE notice_url LIKE '%/786665-2025';
Migration
Beim Hinzufügen des Features wurden:
- ✅ Spalte
notice_urlzur Tabelle hinzugefügt - ✅ Index
idx_doc_notice_urlerstellt - ✅ URLs für alle existierenden Datensätze generiert
- ✅ Entity-Klasse mit automatischer Generierung erweitert
- ✅ Repository-Methode
findByNoticeUrl()hinzugefügt
Hinweise
- Die URL wird nur generiert wenn
publication_idvorhanden ist - Führende Nullen werden automatisch entfernt (
00786665→786665) - Die URL wird bei jedem Update aktualisiert (falls sich
publication_idändert) - Die Spalte ist nicht
NOT NULLda alte Datensätze möglicherweise keinepublication_idhaben