Update app.py
Browse files
app.py
CHANGED
|
@@ -78,7 +78,10 @@ body::before { content:''; position:fixed; inset:0; background-image:linear-grad
|
|
| 78 |
.module-grid { display:grid; grid-template-columns:1fr 1fr; gap:8px; }
|
| 79 |
.module-btn { background:rgba(0,212,255,0.05); border:1px solid rgba(0,212,255,0.3); border-radius:6px; padding:12px; cursor:pointer; transition:all 0.3s; text-align:left; color:var(--text); font-family:'Share Tech Mono',monospace; font-size:0.75rem; }
|
| 80 |
.module-btn:hover { background:rgba(0,212,255,0.15); border-color:var(--blue); box-shadow:var(--glow-blue); transform:translateY(-2px); }
|
|
|
|
|
|
|
| 81 |
.module-name { font-weight:700; color:var(--blue); }
|
|
|
|
| 82 |
.chat-box { height:280px; overflow-y:auto; background:rgba(0,0,0,0.3); border:1px solid var(--border); border-radius:6px; padding:15px; margin-bottom:10px; scroll-behavior:smooth; }
|
| 83 |
.chat-box::-webkit-scrollbar{width:4px;} .chat-box::-webkit-scrollbar-thumb{background:var(--border);border-radius:2px;}
|
| 84 |
.msg { margin-bottom:12px; animation:fadeIn 0.3s ease; }
|
|
@@ -132,7 +135,7 @@ body::before { content:''; position:fixed; inset:0; background-image:linear-grad
|
|
| 132 |
|
| 133 |
<div class="grid g4">
|
| 134 |
<div class="panel"><div class="panel-title">⚡ PROVIDERS</div><div class="stat-value" id="providerCount">—</div><div class="stat-label">AI AKTIF</div></div>
|
| 135 |
-
<div class="panel gold"><div class="panel-title gold">💰 MODULES</div><div class="stat-value" style="color:var(--gold)">
|
| 136 |
<div class="panel"><div class="panel-title">🔗 AFFILIATES</div><div class="stat-value">2</div><div class="stat-label">PROGRAMS</div></div>
|
| 137 |
<div class="panel red"><div class="panel-title red">🚀 SESSIONS</div><div class="stat-value" style="color:var(--red)" id="sessionCount">0</div><div class="stat-label">COMPLETED</div></div>
|
| 138 |
</div>
|
|
@@ -157,7 +160,8 @@ body::before { content:''; position:fixed; inset:0; background-image:linear-grad
|
|
| 157 |
<button class="module-btn" onclick="runModuleInput('scout','target','Target riset:')"><span style="font-size:1.2rem">🔍</span><br><span class="module-name">Scout</span></button>
|
| 158 |
<button class="module-btn" onclick="runWriter()"><span style="font-size:1.2rem">✍️</span><br><span class="module-name">Writer</span></button>
|
| 159 |
<button class="module-btn" onclick="runModuleInput('publisher','content','Masukkan konten:')"><span style="font-size:1.2rem">📢</span><br><span class="module-name">Publisher</span></button>
|
| 160 |
-
<button class="module-btn" onclick="runModule('analyst')"
|
|
|
|
| 161 |
</div>
|
| 162 |
</div>
|
| 163 |
</div>
|
|
@@ -180,7 +184,7 @@ body::before { content:''; position:fixed; inset:0; background-image:linear-grad
|
|
| 180 |
</div>
|
| 181 |
<div class="link-card">
|
| 182 |
<div class="link-platform">🛒 SHOPEE</div>
|
| 183 |
-
<div class="link-url" onclick="copyLink(this)">shopee.co.id
|
| 184 |
<div class="link-commission">💵 2-10%/sale</div>
|
| 185 |
</div>
|
| 186 |
<button class="btn gold" style="width:100%;margin-top:8px" onclick="genTemplate()">📝 GEN TEMPLATE</button>
|
|
@@ -287,6 +291,23 @@ async function runWriter() {
|
|
| 287 |
} catch(e) { outputBox.textContent = '⚠️ Error.'; }
|
| 288 |
}
|
| 289 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 290 |
async function genTemplate() {
|
| 291 |
const platform = window.prompt('Platform (hostinger/shopee):') || 'hostinger';
|
| 292 |
try {
|
|
|
|
| 78 |
.module-grid { display:grid; grid-template-columns:1fr 1fr; gap:8px; }
|
| 79 |
.module-btn { background:rgba(0,212,255,0.05); border:1px solid rgba(0,212,255,0.3); border-radius:6px; padding:12px; cursor:pointer; transition:all 0.3s; text-align:left; color:var(--text); font-family:'Share Tech Mono',monospace; font-size:0.75rem; }
|
| 80 |
.module-btn:hover { background:rgba(0,212,255,0.15); border-color:var(--blue); box-shadow:var(--glow-blue); transform:translateY(-2px); }
|
| 81 |
+
.module-btn.shopee { border-color:rgba(255,80,0,0.4); }
|
| 82 |
+
.module-btn.shopee:hover { background:rgba(255,80,0,0.15); border-color:#ff5000; box-shadow:0 0 20px rgba(255,80,0,0.4); }
|
| 83 |
.module-name { font-weight:700; color:var(--blue); }
|
| 84 |
+
.module-name.orange { color:#ff8c00; }
|
| 85 |
.chat-box { height:280px; overflow-y:auto; background:rgba(0,0,0,0.3); border:1px solid var(--border); border-radius:6px; padding:15px; margin-bottom:10px; scroll-behavior:smooth; }
|
| 86 |
.chat-box::-webkit-scrollbar{width:4px;} .chat-box::-webkit-scrollbar-thumb{background:var(--border);border-radius:2px;}
|
| 87 |
.msg { margin-bottom:12px; animation:fadeIn 0.3s ease; }
|
|
|
|
| 135 |
|
| 136 |
<div class="grid g4">
|
| 137 |
<div class="panel"><div class="panel-title">⚡ PROVIDERS</div><div class="stat-value" id="providerCount">—</div><div class="stat-label">AI AKTIF</div></div>
|
| 138 |
+
<div class="panel gold"><div class="panel-title gold">💰 MODULES</div><div class="stat-value" style="color:var(--gold)">8</div><div class="stat-label">AUTONOMOUS</div></div>
|
| 139 |
<div class="panel"><div class="panel-title">🔗 AFFILIATES</div><div class="stat-value">2</div><div class="stat-label">PROGRAMS</div></div>
|
| 140 |
<div class="panel red"><div class="panel-title red">🚀 SESSIONS</div><div class="stat-value" style="color:var(--red)" id="sessionCount">0</div><div class="stat-label">COMPLETED</div></div>
|
| 141 |
</div>
|
|
|
|
| 160 |
<button class="module-btn" onclick="runModuleInput('scout','target','Target riset:')"><span style="font-size:1.2rem">🔍</span><br><span class="module-name">Scout</span></button>
|
| 161 |
<button class="module-btn" onclick="runWriter()"><span style="font-size:1.2rem">✍️</span><br><span class="module-name">Writer</span></button>
|
| 162 |
<button class="module-btn" onclick="runModuleInput('publisher','content','Masukkan konten:')"><span style="font-size:1.2rem">📢</span><br><span class="module-name">Publisher</span></button>
|
| 163 |
+
<button class="module-btn" onclick="runModule('analyst')"><span style="font-size:1.2rem">📈</span><br><span class="module-name">Analyst</span></button>
|
| 164 |
+
<button class="module-btn shopee" onclick="runShopee()"><span style="font-size:1.2rem">🛒</span><br><span class="module-name orange">ShopeePromoter</span></button>
|
| 165 |
</div>
|
| 166 |
</div>
|
| 167 |
</div>
|
|
|
|
| 184 |
</div>
|
| 185 |
<div class="link-card">
|
| 186 |
<div class="link-platform">🛒 SHOPEE</div>
|
| 187 |
+
<div class="link-url" onclick="copyLink(this)">https://s.shopee.co.id/6pvyNUFq9A</div>
|
| 188 |
<div class="link-commission">💵 2-10%/sale</div>
|
| 189 |
</div>
|
| 190 |
<button class="btn gold" style="width:100%;margin-top:8px" onclick="genTemplate()">📝 GEN TEMPLATE</button>
|
|
|
|
| 291 |
} catch(e) { outputBox.textContent = '⚠️ Error.'; }
|
| 292 |
}
|
| 293 |
|
| 294 |
+
async function runShopee() {
|
| 295 |
+
const product_link = window.prompt('Link affiliate produk Shopee:');
|
| 296 |
+
if (!product_link) return;
|
| 297 |
+
const product_name = window.prompt('Nama produk (boleh kosong):') || '';
|
| 298 |
+
const price = window.prompt('Harga produk (boleh kosong):') || '';
|
| 299 |
+
outputBox.innerHTML = `<div class="thinking"><span></span><span></span><span></span></div> Generating konten Shopee...`;
|
| 300 |
+
try {
|
| 301 |
+
const res = await fetch('/api/module', {method:'POST', headers:{'Content-Type':'application/json'}, body:JSON.stringify({module:'shopee', product_link, product_name, price})});
|
| 302 |
+
const data = await res.json();
|
| 303 |
+
outputBox.textContent = data.output;
|
| 304 |
+
document.getElementById('outputMeta').textContent = `ShopeePromoter: ${product_name || product_link}`;
|
| 305 |
+
document.getElementById('providerBadge').textContent = data.provider;
|
| 306 |
+
document.getElementById('providerBadge').style.display = 'inline';
|
| 307 |
+
logActivity('SHOPEE', 'Konten generated');
|
| 308 |
+
} catch(e) { outputBox.textContent = '��️ Error.'; }
|
| 309 |
+
}
|
| 310 |
+
|
| 311 |
async function genTemplate() {
|
| 312 |
const platform = window.prompt('Platform (hostinger/shopee):') || 'hostinger';
|
| 313 |
try {
|