fix(archive): BAK-05 Report liefert existing_in_storage fuer BAK-08
Report enthielt bisher nur Abweichungen. BAK-08 braucht eine deterministisch sortierte Liste bestaetigt existierender Objekte als Stichprobengrundlage, nicht nur "keine Abweichung". Ergaenzt vor BAK-08-Start, real neu getestet (9/9) und auf 131 erneut ausgeloest.
This commit is contained in:
@@ -37,6 +37,13 @@ type Report struct {
|
||||
// OrphanedInStorage: Objekt im Storage vorhanden, kein Datenbankeintrag
|
||||
// (Akzeptanzkriterium 2).
|
||||
OrphanedInStorage []Finding `json:"orphaned_in_storage"`
|
||||
// ExistingInStorage: Datenbankeintrag UND Storage-Objekt beide
|
||||
// vorhanden — reine Existenzbestätigung, KEINE Inhaltsprüfung. Dient
|
||||
// Archive BAK-08 als stabile, deterministisch sortierte
|
||||
// Stichprobengrundlage (nach StorageKey aufsteigend, siehe Report-
|
||||
// Dokumentation oben) — BAK-08 muss dafür selbst nicht mehr
|
||||
// sortieren/filtern.
|
||||
ExistingInStorage []Finding `json:"existing_in_storage"`
|
||||
}
|
||||
|
||||
// IsClean liefert true, wenn der Lauf keine Abweichungen fand (Pflicht-
|
||||
@@ -71,10 +78,12 @@ func Reconcile(dbEntries []DBEntry, storageKeys []string) Report {
|
||||
dbSet[e.StorageKey] = e
|
||||
}
|
||||
|
||||
var missing []Finding
|
||||
var missing, existing []Finding
|
||||
for _, e := range dbEntries {
|
||||
if !storageSet[e.StorageKey] {
|
||||
missing = append(missing, Finding(e))
|
||||
} else {
|
||||
existing = append(existing, Finding(e))
|
||||
}
|
||||
}
|
||||
var orphaned []Finding
|
||||
@@ -86,10 +95,12 @@ func Reconcile(dbEntries []DBEntry, storageKeys []string) Report {
|
||||
|
||||
sort.Slice(missing, func(i, j int) bool { return missing[i].StorageKey < missing[j].StorageKey })
|
||||
sort.Slice(orphaned, func(i, j int) bool { return orphaned[i].StorageKey < orphaned[j].StorageKey })
|
||||
sort.Slice(existing, func(i, j int) bool { return existing[i].StorageKey < existing[j].StorageKey })
|
||||
|
||||
return Report{
|
||||
GeneratedAt: time.Now().UTC(),
|
||||
MissingInStorage: missing,
|
||||
OrphanedInStorage: orphaned,
|
||||
ExistingInStorage: existing,
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user