import gradio as gr from datetime import datetime # Ürün fiyatları ve stok durumu urun_bilgileri = { "Pantolon": {"fiyat": 1350, "stok": 20, "kategori": "Giyim"}, "Gömlek": {"fiyat": 850, "stok": 30, "kategori": "Giyim"}, "Ayakkabı": {"fiyat": 1500, "stok": 15, "kategori": "Ayakkabı"}, "Tişört": {"fiyat": 250, "stok": 50, "kategori": "Giyim"}, "Çorap": {"fiyat": 150, "stok": 100, "kategori": "Aksesuar"}, "Mont": {"fiyat": 850, "stok": 10, "kategori": "Dış Giyim"}, "Şapka": {"fiyat": 200, "stok": 25, "kategori": "Aksesuar"}, "Atkı": {"fiyat": 120, "stok": 40, "kategori": "Aksesuar"}, "Eldiven": {"fiyat": 100, "stok": 35, "kategori": "Aksesuar"}, "Forma": {"fiyat": 500, "stok": 45, "kategori": "Spor Giyim"}, "Kazak": {"fiyat": 400, "stok": 30, "kategori": "Giyim"}, "Ceket": {"fiyat": 1500, "stok": 20, "kategori": "Dış Giyim"} } def sepet_ozeti_olustur(sepet): if not sepet: return "Sepetiniz boş" kategori_toplam = {} urun_sayilari = {} # Ürün sayılarını hesapla for urun in sepet: if urun not in urun_sayilari: urun_sayilari[urun] = 0 urun_sayilari[urun] += 1 kategori = urun_bilgileri[urun]["kategori"] if kategori not in kategori_toplam: kategori_toplam[kategori] = [] if urun not in kategori_toplam[kategori]: kategori_toplam[kategori].append(urun) ozet = [] for kategori, urunler in kategori_toplam.items(): ozet.append(f"\n🏷️ {kategori}:") for urun in urunler: fiyat = urun_bilgileri[urun]["fiyat"] kalan_stok = urun_bilgileri[urun]["stok"] adet = urun_sayilari[urun] ozet.append(f" • {urun} ({fiyat} TL) - {adet} adet - Stokta: {kalan_stok} adet") return "\n".join(ozet) def siparis_hesapla(sepet, urun_adi, ekle, mesaj_gecmisi): alinan_urunler = sepet.copy() zaman = datetime.now().strftime("%H:%M:%S") uyari = None if ekle: if urun_bilgileri[urun_adi]["stok"] > 0: alinan_urunler.append(urun_adi) urun_bilgileri[urun_adi]["stok"] -= 1 mesaj = f"{zaman} - {urun_adi} sepete eklendi" else: mesaj = f"{zaman} - {urun_adi} stokta kalmadı!" uyari = f"⚠️ {urun_adi} stokta kalmadı!" else: if urun_adi in alinan_urunler: alinan_urunler.remove(urun_adi) urun_bilgileri[urun_adi]["stok"] += 1 mesaj = f"{zaman} - {urun_adi} sepetten çıkarıldı" else: mesaj = f"{zaman} - {urun_adi} sepette bulunmuyor!" uyari = f"⚠️ {urun_adi} sepetinizde bulunmuyor!" # Toplam fiyat hesaplama toplam_fiyat = sum(urun_bilgileri[urun]["fiyat"] for urun in alinan_urunler) # Sepet özeti oluşturma sepet_ozeti = sepet_ozeti_olustur(alinan_urunler) # İşlem geçmişi güncelleme mesaj_gecmisi = mesaj_gecmisi + "\n" + mesaj if mesaj_gecmisi else mesaj sonuc_metni = ( f"🛍️ SEPET DETAYI:\n{sepet_ozeti}\n\n" f"💰 Toplam Tutar: {toplam_fiyat} TL" ) if uyari: sonuc_metni = uyari + "\n\n" + sonuc_metni return alinan_urunler, sonuc_metni, mesaj_gecmisi def islem_gecmisi_goster(mesaj_gecmisi): if not mesaj_gecmisi: return "Henüz işlem yapılmadı." return "📝 İŞLEM GEÇMİŞİ:\n" + mesaj_gecmisi # Gradio arayüzü with gr.Blocks(theme=gr.themes.Soft()) as arayuz: gr.Markdown("# 🛍️ Alışveriş Sepeti") with gr.Row(): with gr.Column(scale=2): sepet = gr.State(value=[]) mesaj_gecmisi = gr.State(value="") sonuc = gr.Textbox(label="Sepet Detayları", interactive=False, lines=10) with gr.Accordion("📝 İşlem Geçmişi", open=False): gecmis = gr.Textbox(label="", interactive=False, lines=5) gr.Button("Geçmişi Göster").click( fn=islem_gecmisi_goster, inputs=[mesaj_gecmisi], outputs=[gecmis] ) with gr.Column(scale=3): gr.Markdown("### 📦 Ürünler") with gr.Row(): for urun_adi, bilgi in urun_bilgileri.items(): with gr.Column(): fiyat = bilgi["fiyat"] stok = bilgi["stok"] gr.Markdown(f""" **{urun_adi}** {fiyat} TL Stok: {stok} """) with gr.Row(): ekle_btn = gr.Button( "+", size="sm", scale=1 ).click( fn=lambda s, m, u=urun_adi, e=True: siparis_hesapla(s, u, e, m), inputs=[sepet, mesaj_gecmisi], outputs=[sepet, sonuc, mesaj_gecmisi] ) cikar_btn = gr.Button( "-", size="sm", scale=1 ).click( fn=lambda s, m, u=urun_adi, e=False: siparis_hesapla(s, u, e, m), inputs=[sepet, mesaj_gecmisi], outputs=[sepet, sonuc, mesaj_gecmisi] ) arayuz.launch(share=True)