/**
 * _simulate_doget.js — GAS doGet の純粋ロジックをローカルで再現し、
 * 実メール内容に対してサンプルレスポンスを生成する検証スクリプト。
 * （GASのデプロイ前に抽出ロジックが正しいか確認する目的。Node実行用）
 *
 *   node _simulate_doget.js > ../backend/sample_gas_response.json
 */
const crypto = require('crypto');

// --- GmailToWebhook.js から移植した純粋関数 ---
function extractAuctionId_(subject, body) {
  let m;
  m = body.match(/[?&]aid=([A-Za-z0-9]+)/);            if (m) return m[1];
  m = body.match(/オークションID[:：]\s*([A-Za-z0-9]+)/); if (m) return m[1];
  m = subject.match(/\(([A-Za-z0-9]+)\)\s*$/);          if (m) return m[1];
  return '';
}
function extractTransactionUrl_(body) {
  const m = body.match(/https?:\/\/contact\.auctions\.yahoo\.co\.jp\/\S+/);
  return m ? m[0].replace(/[)\]>,。]+$/, '') : '';
}
function computeBodyHash_(subject, receivedIso, body) {
  return crypto.createHash('sha256')
    .update(subject + '\n' + receivedIso + '\n' + body, 'utf8')
    .digest('hex');
}

// --- 実メール（2026-06-04 受信）を再現したテスト入力 ---
const subject = 'Yahoo!オークション - 取引メッセージ：r171_066【一点物】A4 4K 高画質 AI美少女 リゼロ Re:ゼロから始める異世界生活 Reゼロ レム コスプレ ファンアート ルクスAI(f1227209818)';
const sender = 'auction-master@mail.yahoo.co.jp';
const receivedIso = '2026-06-04T02:09:00.000Z'; // 11:09 JST
const body = [
  'ルクスAI様',
  '',
  '落札者から取引メッセージが届きました。',
  '',
  '詳しくは、下記URLから出品時のYahoo! JAPAN IDでログインしてご確認ください。',
  'https://contact.auctions.yahoo.co.jp/seller/top?aid=f1227209818&oid=74248709-6380146217-5243573&read=payms_bid',
  '',
  'オークション情報',
  '',
  '商品：r171_066【一点物】A4 4K 高画質 AI美少女 リゼロ Re:ゼロから始める異世界生活 Reゼロ レム コスプレ ファンアート ルクスAI',
  'オークションID：f1227209818',
  '',
  '********************',
  'このメールはシステムによりYahoo! JAPANから自動送信されています。',
  'このメールに返信されても回答できません。',
  '********************',
  '',
  'Yahoo!オークションをご利用いただき、ありがとうございました。',
  '',
  '(C) LY Corporation'
].join('\n');

const message = {
  source_message_id: '18f3a2b1c4d5e6f7',        // 実際は m.getId()
  received_at: receivedIso,
  sender: sender,
  subject: subject,
  body: body,
  yahoo_transaction_id: extractAuctionId_(subject, body),
  transaction_url: extractTransactionUrl_(body),
  body_hash: computeBodyHash_(subject, receivedIso, body)
};

const response = {
  ok: true,
  count: 1,
  messages: [message],
  fetched_at: '2026-06-04T02:35:00.000Z'
};

process.stdout.write(JSON.stringify(response, null, 2) + '\n');
