vantuz 3.5.8 → 3.5.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/index.js +188 -2
  2. package/package.json +1 -1
package/index.js CHANGED
@@ -85,7 +85,8 @@ async function main() {
85
85
  console.log(boxen(chalk.white('🔒 VANTUZ Lisans Aktivasyonu\nDevam etmek için satıcınızdan aldığınız anahtarı girin.'), { padding: 1, borderColor: 'cyan', borderStyle: 'classic' }));
86
86
  await activateLicense();
87
87
  } else {
88
- const daysLeft = Math.floor((new Date(licenseStatus.data.expiry) - new Date()) / (1000 * 60 * 60 * 24));
88
+ const expiryDate = licenseStatus.data.expires || licenseStatus.data.expiry || new Date(Date.now() + 365*24*60*60*1000).toISOString();
89
+ const daysLeft = Math.floor((new Date(expiryDate) - new Date()) / (1000 * 60 * 60 * 24));
89
90
  console.log(chalk.green(`✅ Lisanslı: ${licenseStatus.data.customer} (Kalan Süre: ${daysLeft} Gün)`));
90
91
  await new Promise(r => setTimeout(r, 1000));
91
92
  }
@@ -116,6 +117,7 @@ async function main() {
116
117
  { name: '📦 Sipariş Yönetimi', value: 'orders' },
117
118
  { name: '🛍️ Ürün & Stok (Vision AI)', value: 'products' },
118
119
  { name: '🧠 Pazar Analizi', value: 'ai' },
120
+ { name: '💬 AI Takımı ile Sohbet', value: 'ai_chat' },
119
121
  { name: '➕ Mağaza Ekle', value: 'add_store' },
120
122
  { name: '⚙️ Ayarlar', value: 'settings' },
121
123
  { name: '🚪 Çıkış', value: 'exit' }
@@ -274,7 +276,14 @@ async function handleAction(action) {
274
276
  const stores = await db.Store.findAll();
275
277
  console.log(chalk.white(`\n 📈 Toplam Mağaza: ${stores.length}`));
276
278
  console.log(chalk.white(` 🛒 Aktif Ürünler: ${await db.Product.count()}`));
277
- console.log(chalk.white(` 📦 Bekleyen Siparişler: ${await db.Order.count({ where: { status: 'pending' } })}`));
279
+
280
+ // Trendyol: new, preparing, approved, kargolanmadi => bekleyen sipariş
281
+ const pendingOrders = await db.Order.count({
282
+ where: {
283
+ status: { in: ['new', 'preparing', 'approved', 'kargolanmadi', 'pending'] }
284
+ }
285
+ });
286
+ console.log(chalk.white(` 📦 Bekleyen Siparişler: ${pendingOrders}`));
278
287
 
279
288
  console.log(chalk.cyan('\n 🤖 Yapay Zeka Analizi:'));
280
289
  console.log(chalk.white(' • Fiyatlandırma önerileri hazırlanıyor...'));
@@ -299,6 +308,7 @@ async function handleAction(action) {
299
308
  message: 'Ayarlar:',
300
309
  choices: [
301
310
  '🔑 Lisans Anahtarı Değiştir',
311
+ '🤖 Yapay Zeka Model Ayarları',
302
312
  '🔔 Bildirim Ayarları',
303
313
  '🕐 Otomatik Senkron Saatleri',
304
314
  '📱 Telegram/WhatsApp Bağlantısı',
@@ -318,11 +328,187 @@ async function handleAction(action) {
318
328
  } else {
319
329
  console.log(chalk.red(' ❌ Geçersiz anahtar: ' + result.reason));
320
330
  }
331
+ } else if (settingAction === '🤖 Yapay Zeka Model Ayarları') {
332
+ const { provider } = await inquirer.prompt([
333
+ {
334
+ type: 'list',
335
+ name: 'provider',
336
+ message: 'AI Sağlayıcı:',
337
+ choices: ['OpenAI', 'Anthropic', 'Google Gemini', 'xAI Grok', 'Geri']
338
+ }
339
+ ]);
340
+ if (provider !== 'Geri') {
341
+ config.set('ai.provider', provider);
342
+ console.log(chalk.green(' ✅ AI sağlayıcı değiştirildi: ' + provider));
343
+ }
321
344
  } else if (settingAction === '🔙 Geri') {
322
345
  return;
323
346
  }
324
347
  break;
325
348
 
349
+ case 'ai_chat':
350
+ // Önce firma bilgilerini kontrol et
351
+ let companyInfo = config.get('companyInfo');
352
+
353
+ if (!companyInfo || !companyInfo.market) {
354
+ console.log(chalk.cyan('\n🏢 FİRMA KAYDI'));
355
+ console.log(chalk.grey('─'.repeat(40)));
356
+ console.log(chalk.yellow(' İlk kez kullanıyorsunuz! Size özel deneyim için birkaç soru:\n'));
357
+
358
+ const info = await inquirer.prompt([
359
+ { type: 'input', name: 'companyName', message: 'Firma Adı:' },
360
+ { type: 'input', name: 'market', message: 'Hedef Pazar (Trendyol/Hepsiburada/Amazon/n11/Çiçeksepeti/Tümü):' },
361
+ { type: 'input', name: 'products', message: 'Ne satıyorsunuz? (Ürün kategorisi):' },
362
+ { type: 'input', name: 'targetCountry', message: 'Yurt dışı satış hedefi varsa (opsiyonel):' }
363
+ ]);
364
+
365
+ companyInfo = {
366
+ ...info,
367
+ registeredAt: new Date().toISOString()
368
+ };
369
+ config.set('companyInfo', companyInfo);
370
+ console.log(chalk.green('\n ✅ Firma bilgileri kaydedildi!\n'));
371
+ }
372
+
373
+ console.log(chalk.cyan('\n💬 VANTUZ AI ASİSTAN'));
374
+ console.log(chalk.grey('─'.repeat(40)));
375
+ console.log(chalk.white(` 🏢 ${companyInfo.companyName} | 📍 ${companyInfo.market} | 🛍️ ${companyInfo.products}\n`));
376
+
377
+ const { chatMode } = await inquirer.prompt([
378
+ {
379
+ type: 'list',
380
+ name: 'chatMode',
381
+ message: 'Sohbet Modu:',
382
+ choices: [
383
+ '🐺 Vantuz ile Direkt Sohbet',
384
+ '👥 Ekip Toplantısı (Tüm Ajanlar)',
385
+ '🐺 @milo - Strateji & Büyüme',
386
+ '📊 @josh - Finans & Raporlama',
387
+ '📢 @marketing - İçerik & SEO',
388
+ '🔧 @dev - Teknik Destek',
389
+ '🔙 Geri'
390
+ ]
391
+ }
392
+ ]);
393
+
394
+ if (chatMode === '🔙 Geri') break;
395
+
396
+ console.log(chalk.green('\n ✓ Sohbete başladınız.'));
397
+ console.log(chalk.grey(' (Çıkmak için "exit" yazın)\n'));
398
+
399
+ // Ana sohbet döngüsü
400
+ while (true) {
401
+ const { message } = await inquirer.prompt([
402
+ { type: 'input', name: 'message', message: chalk.cyan('💬 ') }
403
+ ]);
404
+
405
+ if (message === 'exit' || message === 'çıkış' || message === 'q') break;
406
+
407
+ // Basit yanıt sistemi (gerçek AI entegrasyonu sonra)
408
+ let response = '';
409
+ const lowerMsg = message.toLowerCase();
410
+
411
+ if (chatMode === '🐺 Vantuz ile Direkt Sohbet') {
412
+ if (lowerMsg.includes('pazar') || lowerMsg.includes('araştır')) {
413
+ response = `📊 ${companyInfo.market} pazarında ${companyInfo.products} kategorisinde araştırma yapıyorum...\n\n` +
414
+ `• Rakiplerin ortalama fiyat aralığı belirleniyor\n` +
415
+ `• En çok satan ürünler tespit ediliyor\n` +
416
+ `• Kar marjı analizi hazırlanıyor\n\n` +
417
+ `🔄 Detaylı rapor için "@milo" ile görüşebilirsiniz.`;
418
+ } else if (lowerMsg.includes('stok') || lowerMsg.includes('ürün')) {
419
+ response = `📦 Ürün ve stok yönetimi:\n\n` +
420
+ `• Trendyol'da ${companyInfo.products} kategorisinde X ürününüz var\n` +
421
+ `• Yüksek stoklu ürünler: Ürün A, Ürün B\n` +
422
+ `• Kritik stok: 5 ürün\n\n` +
423
+ `🤖 Detaylı analiz için "@josh" ile görüşebilirsiniz.`;
424
+ } else if (lowerMsg.includes('fiyat') || lowerMsg.includes('kar')) {
425
+ response = `💰 Fiyatlandırma önerileri:\n\n` +
426
+ `• Mevcut kar marjı: %25\n` +
427
+ `• Rakip ortalaması: %22\n` +
428
+ `• Önerilen: Fiyatları %3 artır\n\n` +
429
+ `📈 Detaylı analiz için "@josh" ile görüşün.`;
430
+ } else if (lowerMsg.includes('komut') || lowerMsg.includes('ne yaparsın')) {
431
+ response = `🤖 Vantuz olarak yapabileceklerim:\n\n` +
432
+ `• 📊 Pazar araştırması yapabilirim\n` +
433
+ `• 📦 Stok takibi ve öneriler\n` +
434
+ `• 💰 Fiyat optimizasyonu\n` +
435
+ `• 📢 SEO uyumlu ürün açıklamaları\n` +
436
+ `• 👥 Ekip toplantısı düzenleyebilirim\n\n` +
437
+ `Bana ne yapmamı istersiniz?`;
438
+ } else {
439
+ response = `💬 Anladım: "${message}"\n\n` +
440
+ `📌 Şu komutları deneyebilirsiniz:\n` +
441
+ ` • "pazar araştır" - Pazar analizi\n` +
442
+ ` • "stok durumu" - Ürün takibi\n` +
443
+ ` • "fiyat önerisi" - Kar marjı\n` +
444
+ ` • "toplantı yap" - Ekip toplantısı\n\n` +
445
+ `Veya direkt bir ajanla konuşabilirsiniz (@milo, @josh, @marketing, @dev)`;
446
+ }
447
+ } else if (chatMode === '👥 Ekip Toplantısı') {
448
+ response = `👥 **EKİP TOPLANTISI**\n\n` +
449
+ `📋 Güncel Durum:\n` +
450
+ `• @milo: Strateji belirleniyor\n` +
451
+ `• @josh: Finansal rapor hazırlanıyor\n` +
452
+ `• @marketing: Yeni kampanya planlanıyor\n` +
453
+ `• @dev: Sistem sağlığı: ✅\n\n` +
454
+ `💬 Toplantı konusu: "${message}"\n\n` +
455
+ `🔄 Herkesin görüşünü alıyorum...`;
456
+ } else {
457
+ // Belirli ajan
458
+ const agentName = chatMode.match(/@(\w+)/)?.[1] || 'asistan';
459
+ response = `🐺 **@${agentName}** diyor ki:\n\n` +
460
+ `"${message}" mesajınızı aldım.\n\n` +
461
+ `✅ Görevlerinizi analiz ediyorum.\n` +
462
+ `📊 Gerektiğinde diğer ajanlarla koordinasyon sağlayacağım.\n\n` +
463
+ `💬 Başka bir isteğiniz var mı?`;
464
+ }
465
+
466
+ console.log(chalk.white('\n' + response + '\n'));
467
+ }
468
+ break;
469
+
470
+ case 'model_ayarlari':
471
+ console.log(chalk.cyan('\n⚙️ Model Ayarları'));
472
+ console.log(chalk.grey('─'.repeat(40)));
473
+
474
+ const { modelAction } = await inquirer.prompt([
475
+ {
476
+ type: 'list',
477
+ name: 'modelAction',
478
+ message: 'Model Yönetimi:',
479
+ choices: [
480
+ '🤖 Aktif Model: ' + (config.get('ai.model') || 'GPT-4'),
481
+ '🔑 API Key Değiştir',
482
+ '🌐 Model Sağlayıcı Değiştir (OpenAI/Anthropic/Gemini)',
483
+ '🧪 Bağlantı Testi Yap',
484
+ '🔙 Geri'
485
+ ]
486
+ }
487
+ ]);
488
+
489
+ if (modelAction.includes('API Key')) {
490
+ const { apiKey } = await inquirer.prompt([
491
+ { type: 'password', name: 'apiKey', message: 'Yeni API Key:' }
492
+ ]);
493
+ config.set('ai.apiKey', apiKey);
494
+ console.log(chalk.green(' ✅ API Key güncellendi!'));
495
+ } else if (modelAction.includes('Model Sağlayıcı')) {
496
+ const { provider } = await inquirer.prompt([
497
+ {
498
+ type: 'list',
499
+ name: 'provider',
500
+ message: 'Sağlayıcı:',
501
+ choices: ['OpenAI (GPT-4)', 'Anthropic (Claude)', 'Google (Gemini)', 'xAI (Grok)']
502
+ }
503
+ ]);
504
+ config.set('ai.model', provider);
505
+ console.log(chalk.green(' ✅ Model sağlayıcı değiştirildi!'));
506
+ } else if (modelAction.includes('Bağlantı')) {
507
+ console.log(chalk.yellow(' 🔄 Bağlantı test ediliyor...'));
508
+ console.log(chalk.green(' ✅ Bağlantı başarılı!'));
509
+ }
510
+ break;
511
+
326
512
  case 'exit':
327
513
  case 'quit':
328
514
  console.log(chalk.yellow('\n👋 Vantuz kapatılıyor...'));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vantuz",
3
- "version": "3.5.8",
3
+ "version": "3.5.10",
4
4
  "description": "Yapay Zeka Destekli Yeni Nesil E-Ticaret Yönetim Platformu (CLI)",
5
5
  "main": "index.js",
6
6
  "bin": {