<?php
error_reporting(E_ALL);
ini_set('display_errors', '1');
header('Content-Type: application/json; charset=utf-8');
header('Access-Control-Allow-Origin: *');
if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') { exit; }

$data_dir = '/var/www/api-own-data';
$sido_map = ['11'=>'seoul','26'=>'busan','27'=>'daegu','28'=>'incheon','29'=>'gwangju','30'=>'daejeon','31'=>'ulsan','36'=>'sejong','41'=>'gyeonggi','42'=>'gangwon','43'=>'chungbuk','44'=>'chungnam','45'=>'jeonbuk','46'=>'jeonnam','47'=>'gyeongbuk','48'=>'gyeongnam','50'=>'jeju','51'=>'gangwon','52'=>'jeonbuk'];

function enc($s) { return mb_convert_encoding(trim($s), 'UTF-8', 'EUC-KR,CP949,UTF-8'); }

function search_v1($file, $keyword, $max=100) {
    if (!file_exists($file)) return [];
    $esc = escapeshellarg($keyword);
    $out = shell_exec("LC_ALL=C grep -am {$max} {$esc} ".escapeshellarg($file));
    if (empty($out)) return [];
    $rows = [];
    foreach (explode("\n", trim($out)) as $line) {
        $c = str_getcsv($line);
        if (count($c) < 16) continue;
        $rows[] = [
            'pnu'       => $c[0],
            'dong_code' => $c[1],
            'dong_name' => enc($c[2]),
            'ledger'    => enc($c[4]),
            'jibun'     => trim($c[5]),
            'zone_code' => trim($c[9]),
            'zone_name' => enc($c[10]),
            'jimok'     => enc($c[15]),
            'price_m2'  => trim(str_replace("\r", '', $c[16] ?? '0'))
        ];
    }
    return $rows;
}

$pnu = isset($_GET['pnu']) ? trim($_GET['pnu']) : '';
$dong = isset($_GET['dong']) ? trim($_GET['dong']) : '';

if (empty($pnu) && empty($dong)) {
    echo json_encode(['status'=>'info','msg'=>'API v2.1'], JSON_UNESCAPED_UNICODE);
    exit;
}

if (!empty($pnu)) {
    $sido = substr($pnu,0,2);
    $region = isset($sido_map[$sido]) ? $sido_map[$sido] : null;
    if (!$region) { echo json_encode(['status'=>'error','msg'=>'bad pnu']); exit; }
    $v1 = search_v1("{$data_dir}/V1data/V1data-{$region}.csv", $pnu);
    echo json_encode(['status'=>'ok','pnu'=>$pnu,'region'=>$region,
        'v1'=>$v1,'v1_count'=>count($v1)
    ], JSON_UNESCAPED_UNICODE | JSON_INVALID_UTF8_SUBSTITUTE);
} else {
    $dong_enc = mb_convert_encoding($dong, 'EUC-KR', 'UTF-8');
    $v1f = glob("{$data_dir}/V1data/V1data-*.csv");
    $found = []; $region = '';
    foreach ($v1f as $f) {
        $region = str_replace(['V1data-','.csv'], '', basename($f));
        $found = search_v1($f, $dong_enc, 100);
        if (!empty($found)) break;
    }
    echo json_encode(['status'=>'ok','dong'=>$dong,'region'=>$region,
        'v1'=>$found,'v1_count'=>count($found)
    ], JSON_UNESCAPED_UNICODE | JSON_INVALID_UTF8_SUBSTITUTE);
}
?>
