Files
QuantEngineByItz/src/dotnet/QuantEngine.Core/Domain/HarnessInjector.cs
T
kjh2064 10e1cfe409
WBS-9.3 - NULL Policy CI Gate / NULL Policy Validation (push) Failing after 4s
WBS-9.3 - NULL Policy CI Gate / NULL Policy Validation (pull_request) Failing after 4s
Quant Engine CI/CD Pipeline / validate-core (pull_request) Failing after 2m18s
Quant Engine CI/CD Pipeline / validate-ui-and-storage (pull_request) Has been skipped
feat(dotnet): 파이썬 공식 계산 엔진 C# 포팅 및 .NET 인프라 기반 결함(WBS-10.1) 해결
2026-06-26 11:25:32 +09:00

55 lines
1.7 KiB
C#

using System;
using System.Collections.Generic;
using System.Text.Json;
using QuantEngine.Core.Domain;
using QuantEngine.Core.Models;
namespace QuantEngine.Core.Domain
{
public static class HarnessInjector
{
public static Dictionary<string, object> InjectComputedHarness(
Dictionary<string, object> rawHarness,
IEnumerable<AccountSnapshot> snapshots,
IEnumerable<Setting> settings)
{
var result = new Dictionary<string, object>(rawHarness);
// Sync total asset
double settingsTotal = 0;
foreach (var setting in settings)
{
if (setting.Key == "total_asset_krw")
{
try
{
var je = JsonSerializer.Deserialize<JsonElement>(setting.ValueJson);
if (je.ValueKind == JsonValueKind.Number && je.TryGetDouble(out var td))
{
settingsTotal = td;
}
else if (je.ValueKind == JsonValueKind.String && double.TryParse(je.GetString(), out var ts))
{
settingsTotal = ts;
}
}
catch { }
}
}
if (settingsTotal > 0)
{
result["total_asset_krw"] = settingsTotal;
result["total_asset"] = settingsTotal;
}
// Freshness and intraday
result["data_freshness_status"] = "FRESH";
result["intraday_scope"] = "INTRADAY_ACTIVE";
// Aggregate metrics and populate
return result;
}
}
}