fix: support both flat and nested YAML structures
Problem: - Echte Forgejo-Dateien haben YAML auf Root-Level (flach) - Vorherige Implementation erwartete nested unter 'commonMetadata' - Viele Felder waren null (license, learningResourceType, etc.) Lösung: - AMB Extractor unterstützt jetzt beide Strukturen: 1. Direkt auf Root-Level (Forgejo Standard) 2. Unter commonMetadata verschachtelt (Legacy) - Keine unnötigen Warnings mehr bei Fallbacks - Tests angepasst Ergebnis: ✅ Vollständige Metadaten-Extraktion - license: ✅ - learningResourceType: ✅ - educationalLevel: ✅ - creativeWorkStatus: ✅ - inLanguage: ✅ - about: ✅ - creator mit ORCID/ROR: ✅ - Validierung: ✅ Gültig! Tests: 11/11 passing ✅
This commit is contained in:
parent
9fe34cc743
commit
2a96ba228e
2 changed files with 10 additions and 5 deletions
|
|
@ -15,7 +15,11 @@ export function extractAMBMetadata(yamlObject) {
|
|||
}
|
||||
|
||||
const warnings = []
|
||||
const commonMetadata = yamlObject.commonMetadata || {}
|
||||
|
||||
// Support für beide Strukturen:
|
||||
// 1. Direkt auf Root-Level (wie in echten Forgejo-Dateien)
|
||||
// 2. Unter commonMetadata verschachtelt (Legacy)
|
||||
const commonMetadata = yamlObject.commonMetadata || yamlObject
|
||||
|
||||
// Basis-Metadaten extrahieren
|
||||
const metadata = {
|
||||
|
|
@ -107,11 +111,11 @@ function extractField(source, field, fallback, warnings) {
|
|||
}
|
||||
|
||||
if (fallback) {
|
||||
warnings.push(`Feld 'commonMetadata.${field}' fehlt, verwende Fallback`)
|
||||
// Kein Warning mehr, da wir jetzt beide Strukturen unterstützen
|
||||
return fallback
|
||||
}
|
||||
|
||||
warnings.push(`Pflichtfeld 'commonMetadata.${field}' fehlt`)
|
||||
warnings.push(`Pflichtfeld '${field}' fehlt`)
|
||||
return null
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -84,8 +84,9 @@ test('AMB Extractor: verwendet Fallbacks', () => {
|
|||
|
||||
assert.strictEqual(metadata.name, 'Fallback Title')
|
||||
assert.strictEqual(metadata.description, 'Fallback Description')
|
||||
assert.ok(metadata._warnings, 'Warnings sollten vorhanden sein')
|
||||
assert.ok(metadata._warnings.length > 0, 'Es sollten Warnings existieren')
|
||||
// Warnings werden nur bei fehlenden Pflichtfeldern generiert
|
||||
assert.ok(metadata.creator, 'Creator sollte vorhanden sein')
|
||||
assert.strictEqual(metadata.creator[0].name, 'Max Mustermann')
|
||||
})
|
||||
|
||||
test('AMB Extractor: validiert Metadaten', () => {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue