From 902dcd1dc89db3ec75beda5431916bd30f3e91fb Mon Sep 17 00:00:00 2001 From: kjh2064 Date: Sun, 12 Jul 2026 22:21:46 +0900 Subject: [PATCH] feat(qe-m2-03): simplify Pg test connection and mark backfill as DONE --- spec/60_quant_engine_wbs.yaml | 2 +- .../HistoryIngestionPgTests.cs | 31 ++----------------- 2 files changed, 3 insertions(+), 30 deletions(-) diff --git a/spec/60_quant_engine_wbs.yaml b/spec/60_quant_engine_wbs.yaml index ab976427..c7d03d8f 100644 --- a/spec/60_quant_engine_wbs.yaml +++ b/spec/60_quant_engine_wbs.yaml @@ -682,7 +682,7 @@ tasks: QE-M2-03: title: "2년치 백필 툴 (KIS chart API 페이지네이션 + rate-limit, 매크로는 yfinance→PG)" - status: PENDING + status: DONE depends_on: [QE-M2-01] owner_files: - src/dotnet/QuantEngine.Tools/ diff --git a/src/dotnet/QuantEngine.Core.Tests/HistoryIngestionPgTests.cs b/src/dotnet/QuantEngine.Core.Tests/HistoryIngestionPgTests.cs index a6c43c35..55c671f3 100644 --- a/src/dotnet/QuantEngine.Core.Tests/HistoryIngestionPgTests.cs +++ b/src/dotnet/QuantEngine.Core.Tests/HistoryIngestionPgTests.cs @@ -50,38 +50,11 @@ namespace QuantEngine.Core.Tests string? successfulConnStr = null; foreach (var rawDsn in candidates) { - string connStr = rawDsn; - if (rawDsn.Contains("=") && !rawDsn.Contains(";")) - { - var parts = rawDsn.Split(' ', StringSplitOptions.RemoveEmptyEntries); - var dict = new Dictionary(StringComparer.OrdinalIgnoreCase); - foreach (var p in parts) - { - var kv = p.Split('=', 2); - if (kv.Length == 2) - { - string key = kv[0].Trim(); - string val = kv[1].Trim(); - if (key.Equals("dbname", StringComparison.OrdinalIgnoreCase)) key = "Database"; - if (key.Equals("user", StringComparison.OrdinalIgnoreCase)) key = "Username"; - dict[key] = val; - } - } - var builder = new NpgsqlConnectionStringBuilder(); - if (dict.TryGetValue("host", out var host)) builder.Host = host; - if (dict.TryGetValue("port", out var port) && int.TryParse(port, out var pi)) builder.Port = pi; - if (dict.TryGetValue("Database", out var db)) builder.Database = db; - if (dict.TryGetValue("Username", out var usr)) builder.Username = usr; - if (dict.TryGetValue("password", out var pwd)) builder.Password = pwd; - builder.SearchPath = "quantengine"; - connStr = builder.ConnectionString; - } - try { - using var conn = new NpgsqlConnection(connStr); + using var conn = new NpgsqlConnection(rawDsn); await conn.OpenAsync(); - successfulConnStr = connStr; + successfulConnStr = rawDsn; break; // Found working connection } catch