Audit und Laufbelege: Tageswerte je Agent und Einheit, Monatsarchiv statt Loeschen (#700)
Nach der Vorgabe vom 2026-09-22 (so wenig loeschen wie moeglich): Laeufe aelter als hotDays (Vorgabe 180, 0 = alles bleibt) wandern aus AuditLog und RunReceipts in Archive/audit-JJJJ-MM.db - kopiert und entfernt in einer Transaktion, Zeilen-IDs bleiben, spaeter dazugekommene Spalten werden im Archiv ergaenzt. Vorher wird jeder Tag in RunDaily verdichtet (Laeufe, Fehlschlaege, Schrittgrenze, Tokens, Kosten, Werkzeugaufrufe, Fehler, Verweigert, Freigaben) mit der Einheit des Agenten; die Tageswerte bleiben. Nachschlagen eines Laufs findet ihn auch im Archiv. API /usage/days, /usage/archive; Karte 'Tageswerte' in der Verbrauchsansicht. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
0dd8a761b8
commit
095722ae9c
@@ -141,6 +141,9 @@ public sealed class AppHost : IAsyncDisposable
|
||||
/// <summary>#725: Inbound triggers — n8n or any other system hands an agent a task.</summary>
|
||||
public Core.Triggers.InboundTriggers? Triggers { get; private set; }
|
||||
|
||||
/// <summary>#700: Day values and the month archive of audit and receipts.</summary>
|
||||
public Core.Audit.AuditArchive? AuditArchive { get; private set; }
|
||||
|
||||
/// <summary>#197: The external MCP servers, each registered as a tool.</summary>
|
||||
public Core.Mcp.McpConnections? McpServers { get; private set; }
|
||||
|
||||
@@ -724,6 +727,15 @@ public sealed class AppHost : IAsyncDisposable
|
||||
historyKeeper.Start();
|
||||
host._shutdown.Add(historyKeeper.DisposeAsync);
|
||||
|
||||
// #700: day values, and runs older than the hot window move to the month archive.
|
||||
var auditArchive = new Core.Audit.AuditArchive(
|
||||
storage, () => instance.AuditArchive,
|
||||
agentId => instance.Agents.FirstOrDefault(a => string.Equals(a.AgentId, agentId, StringComparison.OrdinalIgnoreCase))?.UnitId,
|
||||
loggerFactory.CreateLogger("ClawdDotNet.Core.Audit"));
|
||||
auditArchive.Start();
|
||||
host.AuditArchive = auditArchive;
|
||||
host._shutdown.Add(auditArchive.DisposeAsync);
|
||||
|
||||
// #698: what holds in a unit, set by its lead.
|
||||
var doctrines = new Core.Organisation.SqliteDoctrineStore(storage);
|
||||
engine.Doctrines = doctrines;
|
||||
|
||||
Reference in New Issue
Block a user