package audit import "context" // AuditLogObjectType ist der Objekttyp-Bezeichner, unter dem Audit-Log- // Eintraege bei der Archive-Retention-Engine registriert werden // (Akzeptanzkriterium 1). const AuditLogObjectType = "audit_log_entry" // DefaultAuditRetentionYears ist die GoBD-Buchungsbeleg-Frist (Akzeptanz- // kriterium 2) — Default, pro Tenant ueberschreibbar sofern rechtlich // zulaessig. Die eigentliche Ueberschreibung/Durchsetzung liegt vollstaendig // bei Archive, siehe AuditRetentionTenantOverridable. const DefaultAuditRetentionYears = 10 // AuditRetentionTenantOverridable erlaubt Archive, die Default-Frist pro // Tenant zu ueberschreiben — Core trifft dabei keine rechtliche Entscheidung, // sondern erlaubt Archive lediglich, so eine Entscheidung zuzulassen. const AuditRetentionTenantOverridable = true // RetentionRegistrar ist der Modul-Adapter-Vertrag aus Archive RET-05, wie // Core ihn konsumiert. Die tatsaechliche Implementierung lebt im // Archive-Modul (RET-01/RET-02/RET-05) und existiert zum Zeitpunkt dieser // Kachel noch nicht als Code — Core kennt nur diese Schnittstelle. // // WICHTIG: Core implementiert absichtlich KEINE eigene Loeschlogik fuer // Audit-Eintraege (Akzeptanzkriterium 3). Dieses Paket enthaelt keinen // Delete-Codepfad fuer audit_events ausser dem durch AUD-02 technisch // unterbundenen — die tatsaechliche Loeschung/Aufbewahrungssperre erfolgt // ausschliesslich innerhalb von Archive, ausserhalb dieses Prozesses. type RetentionRegistrar interface { RegisterObjectType(ctx context.Context, objectType string, defaultRetentionYears int, tenantOverridable bool) error } // RegisterWithArchive meldet den Audit-Log-Objekttyp bei der Archive- // Retention-Engine an. Dies ist die EINZIGE Beruehrung dieses Pakets mit // Retention ueberhaupt — kein zweites, Core-eigenes Retention-System // (siehe "Bekannte Fehler vermeiden" im AUD-05-Ticket). func RegisterWithArchive(ctx context.Context, registrar RetentionRegistrar) error { return registrar.RegisterObjectType(ctx, AuditLogObjectType, DefaultAuditRetentionYears, AuditRetentionTenantOverridable) }