<?php
// /AIWK_WEB/api/diagnostic_log.json.php
// AIWK EXT4 v047
// 역할: WEB+EXT4 상호진단 JSON을 서버 파일에 누적 저장한다. token 원문은 클라이언트에서 제외하는 것을 원칙으로 한다.
header('Content-Type: application/json; charset=utf-8');
$raw = file_get_contents('php://input');
if ($raw === false || trim($raw) === '') {
    echo json_encode(array('ok'=>0, 'msg'=>'empty body'), JSON_UNESCAPED_UNICODE);
    exit;
}
$data = json_decode($raw, true);
if (!is_array($data)) {
    echo json_encode(array('ok'=>0, 'msg'=>'invalid json'), JSON_UNESCAPED_UNICODE);
    exit;
}
if (isset($data['token']) || isset($data['authToken'])) {
    echo json_encode(array('ok'=>0, 'msg'=>'raw token field forbidden'), JSON_UNESCAPED_UNICODE);
    exit;
}
$dir = __DIR__ . '/../data/diagnostic_logs';
if (!is_dir($dir)) {
    if (!mkdir($dir, 0775, true)) {
        echo json_encode(array('ok'=>0, 'msg'=>'mkdir failed'), JSON_UNESCAPED_UNICODE);
        exit;
    }
}
$file = $dir . '/aiwk_diag_' . date('Ymd') . '.jsonl';
$row = array('saved_at'=>date('c'), 'remote_addr'=>isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : '', 'data'=>$data);
$ok = file_put_contents($file, json_encode($row, JSON_UNESCAPED_UNICODE) . "\n", FILE_APPEND | LOCK_EX);
echo json_encode(array('ok'=>$ok === false ? 0 : 1, 'file'=>basename($file), 'bytes'=>$ok === false ? 0 : $ok), JSON_UNESCAPED_UNICODE);
