#!/usr/bin/env dotnet-script
// Real KRX Data Collection Test
// 1개 심볼, 1일 실제 데이터 수집

#r "nuget: System.Net.Http, 4.3.4"

using System;
using System.Net.Http;
using System.Text.Json;
using System.Threading.Tasks;

var httpClient = new HttpClient();
var ticker = "005930"; // 삼성전자
var date = "20240102"; // 2024-01-02

Console.WriteLine("=== KRX 실제 데이터 수집 테스트 ===");
Console.WriteLine($"Ticker: {ticker} (삼성전자)");
Console.WriteLine($"Date: {date}");
Console.WriteLine("");

try
{
    // KRX OpenAPI 호출
    var requestUri = "https://data.krx.co.kr/svc/sample/apis/idx/krx_dd_trd";
    var payload = new { basDd = date };
    var json = JsonSerializer.Serialize(payload);

    Console.WriteLine($"요청: POST {requestUri}");
    Console.WriteLine($"본문: {json}");
    Console.WriteLine("");

    var request = new HttpRequestMessage(HttpMethod.Post, requestUri)
    {
        Content = new StringContent(json, System.Text.Encoding.UTF8, "application/json")
    };

    var response = await httpClient.SendAsync(request);
    var responseContent = await response.Content.ReadAsStringAsync();

    Console.WriteLine($"상태: {response.StatusCode}");
    Console.WriteLine("");

    if (response.IsSuccessStatusCode)
    {
        Console.WriteLine("✅ KRX API 응답 성공!");
        Console.WriteLine("");
        Console.WriteLine("응답 데이터 (처음 500자):");
        Console.WriteLine(responseContent.Substring(0, Math.Min(500, responseContent.Length)));

        // 데이터 행 수 세기
        var lines = responseContent.Split('\n', StringSplitOptions.RemoveEmptyEntries);
        Console.WriteLine("");
        Console.WriteLine($"데이터 행: {lines.Length}");

        // 첫 데이터 행 출력
        if (lines.Length > 1)
        {
            Console.WriteLine($"첫 행: {lines[0].Substring(0, Math.Min(100, lines[0].Length))}");
        }
    }
    else
    {
        Console.WriteLine($"❌ API 에러: {response.StatusCode}");
        Console.WriteLine(responseContent);
    }
}
catch (Exception ex)
{
    Console.WriteLine($"❌ 오류: {ex.Message}");
}

Console.WriteLine("");
Console.WriteLine("테스트 완료.");
