refactor(dotnet): centralize runtime audit trail
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
using System.Text.Json;
|
||||
using QuantEngine.Application.Interfaces;
|
||||
|
||||
namespace QuantEngine.Application.Services;
|
||||
|
||||
public sealed class RuntimeAuditTrailService : IRuntimeAuditTrailService
|
||||
{
|
||||
private readonly string _auditRoot;
|
||||
|
||||
public RuntimeAuditTrailService()
|
||||
{
|
||||
_auditRoot = FindRepoTempRoot();
|
||||
}
|
||||
|
||||
public void Append<T>(string category, string key, T payload)
|
||||
{
|
||||
var root = Path.Combine(_auditRoot, category);
|
||||
Directory.CreateDirectory(root);
|
||||
var path = Path.Combine(root, $"{key}.jsonl");
|
||||
File.AppendAllText(path, JsonSerializer.Serialize(payload, new JsonSerializerOptions { WriteIndented = false }) + Environment.NewLine);
|
||||
}
|
||||
|
||||
private static string FindRepoTempRoot()
|
||||
{
|
||||
var current = new DirectoryInfo(AppContext.BaseDirectory);
|
||||
while (current != null)
|
||||
{
|
||||
if (Directory.Exists(Path.Combine(current.FullName, ".git")))
|
||||
{
|
||||
return Path.Combine(current.FullName, "Temp");
|
||||
}
|
||||
current = current.Parent;
|
||||
}
|
||||
|
||||
return Path.Combine(Directory.GetCurrentDirectory(), "Temp");
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user