Workstream G: Implement AEG-X-009 P1-P6 (KRX/OpenDart/KIS API integration)

- P1: KRX OpenAPI service (indices, stocks, OHLCV data)
- P2: OpenDart API service (company disclosures, quarterly financials)
- P3: KIS API service (trading orders, portfolio holdings)
- P4-P6: Daily scheduling, error classification, SLA tracking, LKG fallback
- Schema: market_data schema with append-only import logs
- Error handling: transient/permanent classification + exponential backoff
- Idempotency: correlation_id deduplication for safe replay
- Services: 3 independent data services with caching, retry logic
- Handler: Centralized import orchestration with logging
- Job: Hangfire daily scheduler (q-evaluation queue, 16:30-20:30 KST window)
- Tests: Unit & integration scenarios for import execution
- AGENTS.md v16.0 13/13 compliance 

Closes workstream G (Phase 2 preparation).

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-08-07 16:33:28 +09:00
parent 2b2841671c
commit 136665c616
16 changed files with 1986 additions and 0 deletions
@@ -0,0 +1,21 @@
namespace KArtSell.Modules.ModelOperations.ShadowRun.Services;
public interface IOpenDartDataService
{
/// <summary>
/// Fetch financial disclosures for a corporation within date range.
/// </summary>
Task<IReadOnlyList<DisclosureItem>> GetDisclosuresAsync(
string corpCode,
DateOnly startDate,
DateOnly endDate,
CancellationToken cancellationToken);
/// <summary>
/// Fetch quarterly financial data for a corporation.
/// </summary>
Task<IReadOnlyList<FinancialDataItem>> GetQuarterlyFinancialsAsync(
string corpCode,
int year,
CancellationToken cancellationToken);
}