#!/usr/bin/env python3
# 기존 plugin/alimTalk.php 의 알림톡 템플릿 문구를 바이트 그대로 추출해
# common/alimtalkTemplatesNew.php 를 만든다.
# (카카오 알림톡은 등록된 템플릿과 공백·줄바꿈까지 맞아야 해서 사람이 옮겨 적지 않는다)
import re, sys, os

root = sys.argv[1] if len(sys.argv) > 1 else '.'
# newline='' : 기존 파일의 줄바꿈(CRLF)을 변환하지 않고 그대로 읽는다 (문구에 \r\n 이 그대로 들어 있다)
src = open(os.path.join(root, 'plugin/alimTalk.php'), encoding='utf-8', newline='').read()

# 템플릿 분기 3개: 두뇌+마음 / 두뇌만 / 마음만 (파일에 나오는 순서)
variants = ['both', 'eeg', 'ppg']
tpl_codes = re.findall(r"\$tpl_code\s*=\s*'(UB_\d+)'", src)
assert len(tpl_codes) == 3, 'tpl_code 3개를 찾지 못함: %r' % tpl_codes

def grab(name, terminator):
    pat = re.compile(r"'%s'\s*=>\s*(.*?)%s" % (name, terminator), re.S)
    found = pat.findall(src)
    assert len(found) == 3, '%s 3개를 찾지 못함: %d' % (name, len(found))
    return [f.strip() for f in found]

messages  = grab('message_1',  r"\s*,\s*\r?\n\s*'button_1'")
buttons   = grab('button_1',   r"\s*,\s*\r?\n(?:\s*//[^\n]*\n)*\s*'failover'")
fmessages = grab('fmessage_1', r"\s*(?://[^\n]*)?\r?\n\s*\);")

out = []
out.append("<?php\n")
out.append("/*\n")
out.append("알림톡 템플릿 문구 (기존 plugin/alimTalk.php 에서 바이트 그대로 추출해 생성한 파일 — 직접 수정하지 말 것)\n")
out.append("생성: python3 tests/tools/gen_alimtalk_templates.py  (카카오 등록 템플릿과 공백까지 같아야 해서 사람이 옮겨 적지 않는다)\n")
out.append("variant: both(두뇌+마음) / eeg(두뇌만) / ppg(마음만)\n")
out.append("*/\n\n")
out.append("function alimtalkTemplateNew(string $variant, array $uData, string $uDateMonth, string $uDateDay, string $smsPdfPath, string $finalPdfPath, string $httsData, string $eeg_link, string $ppg_link): array {\n")
out.append("\tswitch ($variant) {\n")
for i, v in enumerate(variants):
    out.append("\t\tcase '%s':\n" % v)
    out.append("\t\t\treturn [\n")
    out.append("\t\t\t\t'tpl_code'   => '%s',\n" % tpl_codes[i])
    out.append("\t\t\t\t'message_1'  => %s,\n" % messages[i])
    out.append("\t\t\t\t'button_1'   => %s,\n" % buttons[i])
    out.append("\t\t\t\t'fmessage_1' => %s,\n" % fmessages[i])
    out.append("\t\t\t];\n")
out.append("\t}\n")
out.append("\treturn [];\n")
out.append("}\n")

dest = os.path.join(root, 'common/alimtalkTemplatesNew.php')
if len(sys.argv) > 2:
    dest = sys.argv[2]
open(dest, 'w', encoding='utf-8', newline='').write(''.join(out))
print('생성:', dest)
