siteagent-serverside / index.html
ginipick's picture
Update index.html
2f0455e verified
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>MarketGo โ€” ๊ฐ€์ƒ ์‡ผํ•‘๋ชฐ</title>
<link href="https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@300;400;500;700;900&display=swap" rel="stylesheet">
<style>
:root{--bg:#f5f4f0;--surface:#fff;--text:#111;--sub:#888;--accent:#e63946;--border:rgba(0,0,0,.08);}
*{margin:0;padding:0;box-sizing:border-box;}
body{font-family:'Noto Sans KR',sans-serif;background:var(--bg);color:var(--text);}
nav{background:#111;color:#fff;padding:0 40px;display:flex;align-items:center;justify-content:space-between;height:56px;position:sticky;top:0;z-index:100;}
.nav-logo{font-size:20px;font-weight:900;letter-spacing:-1px;}.nav-logo span{color:var(--accent);}
.nav-links{display:flex;gap:24px;font-size:13px;font-weight:500;}
.nav-links a{color:rgba(255,255,255,.7);text-decoration:none;}.nav-links a:hover{color:#fff;}
.nav-right{display:flex;gap:12px;}.nav-right button{border:none;background:none;color:rgba(255,255,255,.7);font-size:20px;cursor:pointer;}
.hero{background:linear-gradient(135deg,#111 60%,#1a1a2e);color:#fff;padding:60px 40px;display:flex;align-items:center;gap:40px;}
.hero-text h1{font-size:42px;font-weight:900;line-height:1.15;letter-spacing:-1.5px;}
.hero-text h1 em{color:var(--accent);font-style:normal;}
.hero-text p{margin-top:12px;font-size:14px;color:rgba(255,255,255,.55);line-height:1.8;}
.hero-btn{margin-top:24px;display:inline-block;padding:13px 28px;background:var(--accent);color:#fff;border-radius:8px;font-size:14px;font-weight:700;text-decoration:none;}
.hero-badge{background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.1);border-radius:12px;padding:20px 28px;min-width:220px;text-align:center;}
.hero-badge .num{font-size:48px;font-weight:900;color:var(--accent);}
.hero-badge .lbl{font-size:12px;color:rgba(255,255,255,.5);margin-top:4px;}
.cats{background:#fff;border-bottom:1px solid var(--border);padding:0 40px;display:flex;overflow-x:auto;}
.cats a{padding:14px 20px;font-size:13px;font-weight:500;color:var(--sub);text-decoration:none;border-bottom:2px solid transparent;white-space:nowrap;}
.cats a.active,.cats a:hover{color:var(--accent);border-bottom-color:var(--accent);}
.section{padding:36px 40px;}
.sec-hd{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px;}
.sec-hd h2{font-size:18px;font-weight:800;}.sec-hd a{font-size:12px;color:var(--sub);text-decoration:none;}
.products{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:16px;}
.card{background:#fff;border-radius:12px;overflow:hidden;border:1px solid var(--border);transition:.2s;cursor:pointer;}
.card:hover{transform:translateY(-3px);box-shadow:0 8px 24px rgba(0,0,0,.1);}
.card-img{width:100%;aspect-ratio:1;display:flex;align-items:center;justify-content:center;font-size:48px;background:#f0f0f0;}
.card-body{padding:12px;}
.card-badge{display:inline-block;padding:2px 7px;background:rgba(230,57,70,.1);color:var(--accent);border-radius:4px;font-size:10px;font-weight:700;margin-bottom:6px;}
.card-name{font-size:13px;font-weight:600;line-height:1.4;margin-bottom:4px;}
.card-sub{font-size:11px;color:var(--sub);margin-bottom:8px;}
.card-price{font-size:16px;font-weight:900;}.card-price s{font-size:12px;color:var(--sub);font-weight:400;margin-right:4px;}.card-price em{font-size:12px;color:var(--accent);font-style:normal;margin-left:4px;}
.banner-row{display:grid;grid-template-columns:1fr 1fr;gap:16px;padding:0 40px 36px;}
.banner{border-radius:14px;padding:28px;color:#fff;position:relative;overflow:hidden;min-height:120px;display:flex;flex-direction:column;justify-content:flex-end;}
.banner-a{background:linear-gradient(135deg,#0f3460,#16213e);}.banner-b{background:linear-gradient(135deg,#1b4332,#2d6a4f);}
.banner h3{font-size:16px;font-weight:800;}.banner p{font-size:11px;opacity:.7;margin-top:4px;}
.banner-ic{position:absolute;right:20px;top:50%;transform:translateY(-50%);font-size:56px;opacity:.3;}
footer{background:#111;color:rgba(255,255,255,.4);text-align:center;padding:24px;font-size:12px;}
/* SiteAgent ํŒจ๋„ */
#sa-fab{position:fixed;bottom:32px;right:32px;z-index:99999;width:64px;height:64px;border-radius:50%;background:linear-gradient(145deg,#5856D6,#007AFF);box-shadow:0 8px 32px rgba(88,86,214,.5);border:none;cursor:pointer;font-size:28px;display:flex;align-items:center;justify-content:center;transition:.2s;}
#sa-fab:hover{transform:scale(1.1);}
#sa-panel{position:fixed;bottom:110px;right:24px;z-index:99999;width:340px;max-height:78vh;background:#fff;border-radius:20px;box-shadow:0 24px 80px rgba(0,0,0,.2);display:none;flex-direction:column;overflow:hidden;}
#sa-panel.open{display:flex;}
.sa-hdr{padding:14px 16px;background:linear-gradient(135deg,#5856D6,#007AFF);color:#fff;display:flex;align-items:center;justify-content:space-between;flex-shrink:0;}
.sa-hdr span{font-size:14px;font-weight:800;}
.sa-close{border:none;background:none;color:rgba(255,255,255,.8);font-size:22px;cursor:pointer;line-height:1;padding:0;}
.sa-tabs{display:flex;border-bottom:1px solid rgba(0,0,0,.06);flex-shrink:0;background:#fff;}
.sa-tab{flex:1;padding:10px 0;font-size:10px;font-weight:600;color:#8e8e93;border:none;background:none;cursor:pointer;border-bottom:2px solid transparent;}
.sa-tab.active{color:#5856D6;border-bottom-color:#5856D6;}
.sa-body{padding:14px;overflow-y:auto;flex:1;}
.sa-sel{width:100%;padding:7px 10px;border:1px solid rgba(0,0,0,.1);border-radius:8px;font-size:11px;margin-bottom:8px;font-family:inherit;background:#fff;}
.sa-inp{width:100%;padding:8px 10px;border:1px solid rgba(0,0,0,.1);border-radius:8px;font-size:11px;font-family:inherit;margin-bottom:8px;}
.sa-ta{width:100%;padding:8px 10px;border:1px solid rgba(0,0,0,.1);border-radius:8px;font-size:11px;font-family:inherit;resize:none;margin-bottom:8px;}
.sa-btn{width:100%;padding:11px;border:none;border-radius:10px;font-size:12px;font-weight:700;cursor:pointer;color:#fff;margin-bottom:8px;}
.sa-result{border:1px solid rgba(0,0,0,.08);border-radius:10px;padding:10px;font-size:11px;line-height:1.7;white-space:pre-wrap;color:#111;background:#fafafa;margin-bottom:8px;}
.sa-copy{padding:6px 14px;border:1px solid rgba(88,86,214,.3);border-radius:8px;font-size:10px;font-weight:700;color:#5856D6;background:rgba(88,86,214,.05);cursor:pointer;}
.sa-spin{text-align:center;padding:20px;}
.sa-dot{display:inline-flex;gap:4px;}
.sa-dot i{width:7px;height:7px;border-radius:50%;background:#5856D6;display:inline-block;animation:sd .8s ease-in-out infinite;}
.sa-dot i:nth-child(2){animation-delay:.15s;}.sa-dot i:nth-child(3){animation-delay:.3s;}
@keyframes sd{0%,80%,100%{transform:scale(.6);opacity:.4}40%{transform:scale(1);opacity:1}}
.sa-store{background:rgba(245,158,11,.05);border:1px solid rgba(245,158,11,.2);border-radius:8px;padding:10px;margin-bottom:8px;}
.sa-store-lbl{font-size:9px;font-weight:700;color:#92400e;margin-bottom:6px;}
.sa-shop-item{display:flex;gap:8px;padding:8px 0;border-bottom:1px solid rgba(0,0,0,.05);}
.sa-shop-img{width:48px;height:48px;border-radius:6px;object-fit:cover;flex-shrink:0;background:#eee;}
.sa-shop-info{flex:1;min-width:0;}
.sa-shop-name{font-size:11px;font-weight:600;line-height:1.3;margin-bottom:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.sa-shop-price{font-size:12px;font-weight:800;color:#e63946;}
.sa-shop-mall{font-size:10px;color:#888;}
.sa-shop-link{flex-shrink:0;padding:5px 8px;background:#5856D6;color:#fff;border-radius:6px;font-size:9px;font-weight:700;text-decoration:none;align-self:flex-start;margin-top:4px;}
.sa-notice{position:fixed;top:68px;right:16px;background:#fff;border:2px solid #e63946;border-radius:12px;padding:14px 36px 14px 16px;font-size:11px;line-height:1.7;box-shadow:0 8px 32px rgba(0,0,0,.15);z-index:99998;max-width:280px;}
.sa-notice strong{display:block;font-size:13px;font-weight:800;color:#e63946;margin-bottom:6px;}
.sa-notice code{display:block;background:#f5f4f0;border-radius:6px;padding:8px;font-size:10px;color:#333;margin-top:8px;word-break:break-all;}
.sa-nclose{position:absolute;top:8px;right:10px;border:none;background:none;font-size:16px;cursor:pointer;color:#aaa;}
</style>
</head>
<body>
<nav>
<div class="nav-logo">Market<span>Go</span></div>
<div class="nav-links"><a href="#">ํ™ˆ</a><a href="#">๋ฒ ์ŠคํŠธ</a><a href="#">์‹ ์ƒํ’ˆ</a><a href="#">ํŠน๊ฐ€</a></div>
<div class="nav-right"><button>๐Ÿ”</button><button>๐Ÿ›’</button><button>๐Ÿ‘ค</button></div>
</nav>
<div class="sa-notice" id="sa-notice">
<button class="sa-nclose" onclick="document.getElementById('sa-notice').remove()">ร—</button>
<strong>๐Ÿ”Œ SiteAgent ํ•œ ์ค„ ์‚ฝ์ž… ๋ฐ๋ชจ</strong>
์ด ์‡ผํ•‘๋ชฐ์€ ์Šคํฌ๋ฆฝํŠธ <b>๋‹จ ํ•œ ์ค„</b>๋กœ<br>SiteAgent AI๊ฐ€ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.<br>
์šฐ์ธก ํ•˜๋‹จ ๐Ÿค– ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜์„ธ์š”.
<code>&lt;script src="https://ginigen-ai-siteagent.hf.space/sa-widget.js"&gt;&lt;/script&gt;</code>
</div>
<div class="hero">
<div class="hero-text">
<h1>์˜ค๋Š˜์˜ <em>ํŠน๊ฐ€</em><br>๋†“์น˜์ง€ ๋งˆ์„ธ์š”</h1>
<p>๋งค์ผ ์˜ค์ „ 10์‹œ, ์ดˆํŠน๊ฐ€ ์ƒํ’ˆ์„ ํ•œ์ • ์ˆ˜๋Ÿ‰ ๊ณต๊ฐœํ•ฉ๋‹ˆ๋‹ค.<br>AI๊ฐ€ ์ตœ์ €๊ฐ€๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ถ„์„ํ•ด ๋“œ๋ฆฝ๋‹ˆ๋‹ค.</p>
<a href="#" class="hero-btn">ํŠน๊ฐ€ ๋ณด๋Ÿฌ๊ฐ€๊ธฐ โ†’</a>
</div>
<div class="hero-badge"><div class="num">73%</div><div class="lbl">์˜ค๋Š˜์˜ ์ตœ๋Œ€ ํ• ์ธ์œจ</div></div>
</div>
<div class="cats">
<a href="#" class="active">์ „์ฒด</a><a href="#">๊ฐ€์ „ยท๋””์ง€ํ„ธ</a><a href="#">ํŒจ์…˜ยท์˜๋ฅ˜</a><a href="#">์‹ํ’ˆยท๊ฑด๊ฐ•</a><a href="#">๋ทฐํ‹ฐยท์ƒํ™œ</a><a href="#">์Šคํฌ์ธ ยท๋ ˆ์ €</a>
</div>
<div class="section">
<div class="sec-hd"><h2>๐Ÿ”ฅ ์˜ค๋Š˜์˜ ์ธ๊ธฐ์ƒํ’ˆ</h2><a href="#">๋”๋ณด๊ธฐ โ†’</a></div>
<div class="products">
<div class="card"><div class="card-img">๐Ÿ’ป</div><div class="card-body"><div class="card-badge">ํŠน๊ฐ€</div><div class="card-name">์‚ผ์„ฑ ๊ฐค๋Ÿญ์‹œ๋ถ4 Pro</div><div class="card-sub">16์ธ์น˜ ยท 32GB</div><div class="card-price"><s>2,890,000์›</s>1,990,000์›<em>31%โ†“</em></div></div></div>
<div class="card"><div class="card-img">๐Ÿ“ฑ</div><div class="card-body"><div class="card-badge">์ธ๊ธฐ</div><div class="card-name">์•„์ดํฐ 16 Pro 256GB</div><div class="card-sub">์ž์—ฐํ‹ฐํƒ€๋Š„ ยท ์ž๊ธ‰์ œ</div><div class="card-price"><s>1,750,000์›</s>1,490,000์›<em>15%โ†“</em></div></div></div>
<div class="card"><div class="card-img">๐ŸŽง</div><div class="card-body"><div class="card-badge">ํŠน๊ฐ€</div><div class="card-name">์†Œ๋‹ˆ WH-1000XM6</div><div class="card-sub">๋…ธ์ด์ฆˆ์บ”์Šฌ๋ง ยท ๋ฌด์„ </div><div class="card-price"><s>459,000์›</s>289,000์›<em>37%โ†“</em></div></div></div>
<div class="card"><div class="card-img">โŒš</div><div class="card-body"><div class="card-badge">์‹ ์ƒ</div><div class="card-name">๊ฐค๋Ÿญ์‹œ ์›Œ์น˜7 ์šธํŠธ๋ผ</div><div class="card-sub">47mm ยท ํ‹ฐํƒ€๋Š„</div><div class="card-price"><s>799,000์›</s>629,000์›<em>21%โ†“</em></div></div></div>
<div class="card"><div class="card-img">๐Ÿ–ฅ๏ธ</div><div class="card-body"><div class="card-badge">ํŠน๊ฐ€</div><div class="card-name">LG ์šธํŠธ๋ผํŒŒ์ธ OLED 27์ธ์น˜</div><div class="card-sub">4K ยท 120Hz</div><div class="card-price"><s>1,290,000์›</s>890,000์›<em>31%โ†“</em></div></div></div>
<div class="card"><div class="card-img">๐ŸŽฎ</div><div class="card-body"><div class="card-badge">ํ•œ์ •</div><div class="card-name">PS5 ์Šฌ๋ฆผ ๋””์Šคํฌ ์—๋””์…˜</div><div class="card-sub">+๋“€์–ผ์„ผ์Šค ์ปจํŠธ๋กค๋Ÿฌ</div><div class="card-price"><s>729,000์›</s>589,000์›<em>19%โ†“</em></div></div></div>
</div>
</div>
<div class="banner-row">
<div class="banner banner-a"><div class="banner-ic">๐Ÿš€</div><h3>๋กœ์ผ“๋ฐฐ์†ก ์˜ค๋Š˜ ์ฃผ๋ฌธ โ†’ ๋‚ด์ผ ๋„์ฐฉ</h3><p>์˜คํ›„ 3์‹œ ์ด์ „ ์ฃผ๋ฌธ ์‹œ ์ต์ผ ๋ฐฐ์†ก ๋ณด์žฅ</p></div>
<div class="banner banner-b"><div class="banner-ic">๐ŸŒฟ</div><h3>์นœํ™˜๊ฒฝ ํŒจํ‚ค์ง• ์ „ํ™˜ ์™„๋ฃŒ</h3><p>100% ์žฌํ™œ์šฉ ๊ฐ€๋Šฅํ•œ ํฌ์žฅ์žฌ ์‚ฌ์šฉ</p></div>
</div>
<footer>ยฉ 2026 MarketGo (๊ฐ€์ƒ ๋ฐ๋ชจ ์‚ฌ์ดํŠธ) ยท SiteAgent ํ•œ ์ค„ ์‚ฝ์ž… ๋ฐ๋ชจ์šฉ</footer>
<!-- SiteAgent FAB -->
<button id="sa-fab" onclick="saToggle()">๐Ÿค–</button>
<!-- SiteAgent ํŒจ๋„ -->
<div id="sa-panel">
<div class="sa-hdr">
<span>๐Ÿค– SiteAgent AI</span>
<button class="sa-close" onclick="saToggle()">ร—</button>
</div>
<div class="sa-tabs">
<button class="sa-tab active" onclick="saTab(0,this)">โœ๏ธ ๊ธ€์“ฐ๊ธฐ</button>
<button class="sa-tab" onclick="saTab(1,this)">โญ ๋ฆฌ๋ทฐ ๋‹ต๋ณ€</button>
<button class="sa-tab" onclick="saTab(2,this)">๐Ÿ›’ ์‡ผํ•‘</button>
</div>
<!-- ๊ธ€์“ฐ๊ธฐ -->
<div class="sa-body" id="sa-t0">
<select class="sa-sel" id="wr-style">
<option value="๋ธ”๋กœ๊ทธ">๐Ÿ“ ๋ธ”๋กœ๊ทธ</option>
<option value="SNS">๐Ÿ“ฑ SNS</option>
<option value="๋ณด๋„์ž๋ฃŒ">๐Ÿ“ฐ ๋ณด๋„์ž๋ฃŒ</option>
<option value="๊ด‘๊ณ ์นดํ”ผ">๐Ÿ“ข ๊ด‘๊ณ ์นดํ”ผ</option>
<option value="์œ ํŠœ๋ธŒ๋Œ€๋ณธ">๐ŸŽฌ ์œ ํŠœ๋ธŒ๋Œ€๋ณธ</option>
</select>
<select class="sa-sel" id="wr-tone">
<option value="์ „๋ฌธ์ ">๐ŸŽฉ ์ „๋ฌธ์ </option>
<option value="์นœ๊ทผํ•œ">๐Ÿ˜Š ์นœ๊ทผํ•œ</option>
<option value="์œ ๋จธ๋Ÿฌ์Šค">๐Ÿ˜„ ์œ ๋จธ๋Ÿฌ์Šค</option>
</select>
<input class="sa-inp" id="wr-topic" placeholder="โœ๏ธ ์ฃผ์ œ (์˜ˆ: AI๊ฐ€ ๋ฐ”๊ฟ€ ๋ฏธ๋ž˜ ๊ต์œก)">
<button class="sa-btn" style="background:linear-gradient(135deg,#5856D6,#0d9488);" onclick="doWrite()">โœ๏ธ ๊ธ€ ์ƒ์„ฑํ•˜๊ธฐ</button>
<div id="wr-spin" class="sa-spin" style="display:none"><div class="sa-dot"><i></i><i></i><i></i></div><div style="font-size:10px;color:#5856D6;margin-top:6px;">์ž‘์„ฑ ์ค‘...</div></div>
<div id="wr-result" class="sa-result" style="display:none"></div>
<button id="wr-copy" class="sa-copy" style="display:none" onclick="saCopy('wr-result','wr-copy')">๐Ÿ“‹ ๋ณต์‚ฌ</button>
</div>
<!-- ๋ฆฌ๋ทฐ ๋‹ต๋ณ€ -->
<div class="sa-body" id="sa-t1" style="display:none">
<div class="sa-store">
<div class="sa-store-lbl">๐Ÿช ๊ฐ€๊ฒŒ ์ •๋ณด (์ž๋™ ์ €์žฅ)</div>
<input class="sa-inp" id="rv-name" placeholder="๊ฐ€๊ฒŒ๋ช…" style="margin-bottom:4px">
<input class="sa-inp" id="rv-type" placeholder="์—…์ข… (์˜ˆ: ํ•œ์‹, ์น˜ํ‚จ)" style="margin-bottom:4px">
<input class="sa-inp" id="rv-menu" placeholder="๋Œ€ํ‘œ ๋ฉ”๋‰ด" style="margin-bottom:4px">
<input class="sa-inp" id="rv-str" placeholder="๊ฐ•์ " style="margin-bottom:0">
</div>
<textarea class="sa-ta" id="rv-text" rows="4" placeholder="๊ณ ๊ฐ ๋ฆฌ๋ทฐ๋ฅผ ๋ถ™์—ฌ๋„ฃ์œผ์„ธ์š”..."></textarea>
<button class="sa-btn" style="background:linear-gradient(135deg,#f59e0b,#ef4444);" onclick="doReview()">โญ ๋‹ต๋ณ€ ์ƒ์„ฑํ•˜๊ธฐ</button>
<div id="rv-spin" class="sa-spin" style="display:none"><div class="sa-dot"><i></i><i></i><i></i></div><div style="font-size:10px;color:#f59e0b;margin-top:6px;">๋ถ„์„ ์ค‘...</div></div>
<div id="rv-result" class="sa-result" style="display:none"></div>
<button id="rv-copy" class="sa-copy" style="display:none" onclick="saCopy('rv-result','rv-copy')">๐Ÿ“‹ ๋ณต์‚ฌ</button>
</div>
<!-- ์‡ผํ•‘ -->
<div class="sa-body" id="sa-t2" style="display:none">
<input class="sa-inp" id="sh-q" placeholder="๐Ÿ›’ ๊ฒ€์ƒ‰์–ด (์˜ˆ: ์•„์ดํŒจ๋“œ ํ”„๋กœ)">
<button class="sa-btn" style="background:linear-gradient(135deg,#f59e0b,#f97316);" onclick="doShop()">๐Ÿ” ๊ฒ€์ƒ‰ํ•˜๊ธฐ</button>
<div id="sh-spin" class="sa-spin" style="display:none"><div class="sa-dot"><i></i><i></i><i></i></div><div style="font-size:10px;color:#f59e0b;margin-top:6px;">๊ฒ€์ƒ‰ ์ค‘...</div></div>
<div id="sh-result"></div>
</div>
</div>
<script>
var SA = 'https://ginigen-ai-siteagent.hf.space';
function saToggle(){
var p = document.getElementById('sa-panel');
var open = p.classList.toggle('open');
if(open){
try{
var s = JSON.parse(localStorage.getItem('__sa_rv_store')||'{}');
if(s.store_name) document.getElementById('rv-name').value = s.store_name;
if(s.store_type) document.getElementById('rv-type').value = s.store_type;
if(s.menu) document.getElementById('rv-menu').value = s.menu;
if(s.strengths) document.getElementById('rv-str').value = s.strengths;
}catch(e){}
}
}
function saTab(n, el){
for(var i=0;i<3;i++){
document.getElementById('sa-t'+i).style.display = i===n?'block':'none';
}
document.querySelectorAll('.sa-tab').forEach(function(t,i){
t.classList.toggle('active', i===n);
});
}
function saCopy(rid, bid){
var txt = document.getElementById(rid).textContent;
navigator.clipboard.writeText(txt).then(function(){
var b = document.getElementById(bid);
b.textContent = 'โœ… ๋ณต์‚ฌ๋จ';
setTimeout(function(){ b.textContent = '๐Ÿ“‹ ๋ณต์‚ฌ'; }, 1500);
});
}
function doWrite(){
var topic = document.getElementById('wr-topic').value.trim();
if(!topic){ alert('์ฃผ์ œ๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š”'); return; }
var style = document.getElementById('wr-style').value;
var tone = document.getElementById('wr-tone').value;
document.getElementById('wr-spin').style.display='block';
document.getElementById('wr-result').style.display='none';
document.getElementById('wr-copy').style.display='none';
fetch(SA+'/api/writer',{method:'POST',headers:{'Content-Type':'application/json'},
body:JSON.stringify({style:style,tone:tone,topic:topic,context:''}),mode:'cors'
}).then(function(r){return r.json();}).then(function(d){
document.getElementById('wr-spin').style.display='none';
if(!d.ok){alert(d.error||'์˜ค๋ฅ˜');return;}
document.getElementById('wr-result').textContent=d.content;
document.getElementById('wr-result').style.display='block';
document.getElementById('wr-copy').style.display='inline-block';
}).catch(function(e){document.getElementById('wr-spin').style.display='none';alert('์˜ค๋ฅ˜: '+e.message);});
}
function doReview(){
var txt = document.getElementById('rv-text').value.trim();
if(!txt){alert('๋ฆฌ๋ทฐ ๋‚ด์šฉ์„ ์ž…๋ ฅํ•˜์„ธ์š”');return;}
var sd={store_name:document.getElementById('rv-name').value.trim(),
store_type:document.getElementById('rv-type').value.trim(),
menu:document.getElementById('rv-menu').value.trim(),
strengths:document.getElementById('rv-str').value.trim()};
try{localStorage.setItem('__sa_rv_store',JSON.stringify(sd));}catch(e){}
document.getElementById('rv-spin').style.display='block';
document.getElementById('rv-result').style.display='none';
document.getElementById('rv-copy').style.display='none';
fetch(SA+'/api/review',{method:'POST',headers:{'Content-Type':'application/json'},
body:JSON.stringify({review_text:txt,store_name:sd.store_name,store_type:sd.store_type,
menu:sd.menu,strengths:sd.strengths,reply_style:'๊ณต์†ํ•˜๊ณ  ๋”ฐ๋œปํ•˜๊ฒŒ'}),mode:'cors'
}).then(function(r){return r.json();}).then(function(d){
document.getElementById('rv-spin').style.display='none';
if(!d.ok){alert(d.error||'์˜ค๋ฅ˜');return;}
document.getElementById('rv-result').textContent=d.reply;
document.getElementById('rv-result').style.display='block';
document.getElementById('rv-copy').style.display='inline-block';
}).catch(function(e){document.getElementById('rv-spin').style.display='none';alert('์˜ค๋ฅ˜: '+e.message);});
}
function doShop(){
var q = document.getElementById('sh-q').value.trim();
if(!q){alert('๊ฒ€์ƒ‰์–ด๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š”');return;}
document.getElementById('sh-spin').style.display='block';
document.getElementById('sh-result').innerHTML='';
fetch(SA+'/api/shopping',{method:'POST',headers:{'Content-Type':'application/json'},
body:JSON.stringify({query:q,sort:'sim'}),mode:'cors'
}).then(function(r){return r.json();}).then(function(d){
document.getElementById('sh-spin').style.display='none';
if(!d.ok){document.getElementById('sh-result').innerHTML='<p style="color:#e11d48;font-size:11px;">'+d.error+'</p>';return;}
var html='';
(d.items||[]).slice(0,6).forEach(function(it){
html+='<div class="sa-shop-item">'
+'<img class="sa-shop-img" src="'+it.image+'" onerror="this.style.background=\'#eee\';this.src=\'\'">'
+'<div class="sa-shop-info">'
+'<div class="sa-shop-name">'+it.title+'</div>'
+'<div class="sa-shop-price">'+it.price.toLocaleString()+'์›</div>'
+'<div class="sa-shop-mall">'+it.mall+'</div>'
+'</div>'
+'<a class="sa-shop-link" href="'+it.link+'" target="_blank">๊ตฌ๋งค</a>'
+'</div>';
});
document.getElementById('sh-result').innerHTML=html||'<p style="font-size:11px;color:#888;padding:10px 0;">๊ฒฐ๊ณผ ์—†์Œ</p>';
}).catch(function(e){document.getElementById('sh-spin').style.display='none';alert('์˜ค๋ฅ˜: '+e.message);});
}
</script>
</body>
</html>