diff --git a/src/dotnet/QuantEngine.Infrastructure/Data/DbMigrator.cs b/src/dotnet/QuantEngine.Infrastructure/Data/DbMigrator.cs index 81ee533..eddc1dd 100644 --- a/src/dotnet/QuantEngine.Infrastructure/Data/DbMigrator.cs +++ b/src/dotnet/QuantEngine.Infrastructure/Data/DbMigrator.cs @@ -105,6 +105,44 @@ namespace QuantEngine.Infrastructure.Data CREATE INDEX IF NOT EXISTS idx_collection_source_errors_run ON collection_source_errors(run_id, source_name); "); + // 3b. KIS 데이터 수집 테이블 추가 (kis_collection_runs, kis_collection_snapshots, kis_collection_errors) + conn.Execute(@" + CREATE TABLE IF NOT EXISTS kis_collection_runs ( + run_id TEXT PRIMARY KEY, + status TEXT NOT NULL, + started_at TEXT NOT NULL, + finished_at TEXT, + total_snapshots INTEGER, + total_errors INTEGER, + updated_at TEXT NOT NULL + ); + CREATE INDEX IF NOT EXISTS idx_kis_runs_started_at ON kis_collection_runs(started_at DESC); + + CREATE TABLE IF NOT EXISTS kis_collection_snapshots ( + run_id TEXT NOT NULL, + dataset_name TEXT, + ticker TEXT NOT NULL, + source_name TEXT NOT NULL, + payload_json TEXT NOT NULL, + captured_at TEXT NOT NULL, + created_at TEXT NOT NULL, + PRIMARY KEY (run_id, ticker, source_name) + ); + CREATE INDEX IF NOT EXISTS idx_kis_snapshots_ticker ON kis_collection_snapshots(ticker); + CREATE INDEX IF NOT EXISTS idx_kis_snapshots_captured_at ON kis_collection_snapshots(captured_at DESC); + + CREATE TABLE IF NOT EXISTS kis_collection_errors ( + id SERIAL PRIMARY KEY, + run_id TEXT NOT NULL, + source_name TEXT NOT NULL, + error_kind TEXT NOT NULL, + error_message TEXT, + ticker TEXT, + created_at TEXT NOT NULL + ); + CREATE INDEX IF NOT EXISTS idx_kis_errors_run_id ON kis_collection_errors(run_id); + "); + // 4. settings conn.Execute(@" CREATE TABLE IF NOT EXISTS settings (