Skip to content
Snippets Groups Projects
Commit 0bd9dd7f authored by Alexander Kohler's avatar Alexander Kohler
Browse files

Project Repository: Fix für Requirements Dekodierung aus MongoDB

Problem war:
- Requirements wurden von EIFFEL als verschachtelte Struktur gespeichert (parsing_result.requirement)
- Mein Repository hat versucht direkt in RequirementSummary zu dekodieren
- Cursor.Decode() wurde zweimal aufgerufen was nicht funktioniert hat

Lösung:
- Erst in bson.M dekodieren um an alle Felder zu kommen
- Dann in RequirementSummary umwandeln
- Requirement-Text aus parsing_result.requirement extrahieren
- Jetzt werden Shortcuts und Anforderungstexte richtig angezeigt

Vorher: "WARN: Skipping invalid requirement document"
Nachher: Requirements werden korrekt geladen und angezeigt
parent 3390e549
No related branches found
No related tags found
1 merge request!4merge dev to main
......@@ -254,16 +254,23 @@ func (r *MongoProjectRepository) FindWithRequirements(ctx context.Context, id pr
// Process each requirement document
var requirements []*RequirementSummary
for cursor.Next(ctx) {
var req RequirementSummary
if err := cursor.Decode(&req); err != nil {
// First decode into a raw document to access nested fields
var doc bson.M
if err := cursor.Decode(&doc); err != nil {
log.Printf("WARN: Skipping invalid requirement document: %v", err)
continue // Skip documents that can't be decoded rather than failing entirely
continue
}
// Convert the raw document to RequirementSummary
var req RequirementSummary
docBytes, _ := bson.Marshal(doc)
if err := bson.Unmarshal(docBytes, &req); err != nil {
log.Printf("WARN: Failed to convert requirement document: %v", err)
continue
}
// Extract additional fields from nested parsing_result if available
// This handles requirements that have been processed by the EIFFEL system
var doc bson.M
cursor.Decode(&doc)
if parsingResult, ok := doc["parsing_result"].(bson.M); ok {
if requirement, ok := parsingResult["requirement"].(string); ok {
req.Requirement = requirement
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment