fix(portal): 토큰 DEFAULT·UNIQUE 인덱스 보장 + 메일 제목 이스케이프 제거
- contact_requests.public_token: 인라인 UNIQUE 제거, 백필 UPDATE 직후 SET DEFAULT + CREATE UNIQUE INDEX IF NOT EXISTS 패턴으로 교체 (라이브 DB 멱등성 보장) - quotes.public_token: ADD COLUMN IF NOT EXISTS + SET DEFAULT + 백필 UPDATE + CREATE UNIQUE INDEX IF NOT EXISTS 4줄 구조로 교체 (인라인 UNIQUE NO-OP 문제 해소) - sendQuoteSentEmail / sendQuoteDecisionEmail subject에서 escapeHtml() 제거 — 메일 제목은 평문, HTML 본문 이스케이프는 유지 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -37,7 +37,7 @@ export async function sendQuoteSentEmail(opts: {
|
||||
await resend().emails.send({
|
||||
from: FROM,
|
||||
to: [clientEmail],
|
||||
subject: `[쟁승메이드] 견적서가 도착했습니다 — ${escapeHtml(quoteTitle)}`,
|
||||
subject: `[쟁승메이드] 견적서가 도착했습니다 — ${quoteTitle}`,
|
||||
html: `
|
||||
<h2>견적서를 보내드립니다</h2>
|
||||
<p>${escapeHtml(clientName)}님, 요청하신 건의 견적서가 준비되었습니다.</p>
|
||||
@@ -57,7 +57,7 @@ export async function sendQuoteDecisionEmail(opts: {
|
||||
await resend().emails.send({
|
||||
from: FROM,
|
||||
to: [ADMIN_EMAIL],
|
||||
subject: `[쟁승메이드] 견적 ${label} — ${escapeHtml(quoteTitle)}`,
|
||||
subject: `[쟁승메이드] 견적 ${label} — ${quoteTitle}`,
|
||||
html: `
|
||||
<h2>고객이 견적을 ${label}했습니다</h2>
|
||||
<p>견적: ${escapeHtml(quoteTitle)} / 고객: ${escapeHtml(clientName)}</p>
|
||||
|
||||
Reference in New Issue
Block a user