# Kakeibo panel istekleri (güncel: 14 Kasım 2026, 2. tur) ## VS Code'daki Claude'a verilecek prompt Aşağıdaki metni olduğu gibi kopyalayıp yapıştırın: ```text docs/KAKEIBO_PANEL_ISTEKLERI.md dosyasını baştan sona oku. Bu dosya, docs/BORC_TAKIBI.md'deki "Borç sayfası" yaklaşımının yerine geçiyor; borç artık ayrı sayfada değil, aylık planın ve panelin içinde "Devreden borç" olarak takip edilecek. Kurallar: 1. Kod yazmadan önce: ilgili dosyaları bul (Planlama, Defter, Ay sonu değerlendirmesi, Panel, Borç sayfası, nav menüsü) ve bana dosya listesiyle birlikte adım adım bir plan göster. Onayımı bekle. 2. Mevcut verilere dokunma: veritabanı yedeği al, yalnızca alan ekle, eski kayıtları toplu değiştirme, koleksiyon silme. Borç sayfasını kaldırırken verisini silme. 3. Bölüm sırasıyla ilerle (A → H). Her bölümden sonra test et, kısa özet ver. 4. Hesapları dosyadaki "Kontrol" rakamlarıyla birim testine dönüştür. 5. Türkçe büyük harf için toLocaleUpperCase("tr-TR") kullan; CSS text-transform kullanma. 6. Bitince npm run lint, typecheck ve testler geçsin; CHANGELOG "Yayınlanmamış" altına yaz. ``` > **Not (Claude, sohbetten):** Bu bilgisayardaki çalışma kopyasında (dal `faz/17-ice-aktarma`, sürüm 1.2.0, 9 Kasım) Planlama, Defter, Ay sonu ve Borç ekranları yok. Bu ekranların bulunduğu güncel sürüm üzerinde çalışılmalı. Dosyalar bulunamazsa Claude tahminle yeni ekran yazmasın, sorsun. --- ## A · Devreden borç: planın parçası olsun ### A1 · Planlama sayfasında yeni kutu - "Birikim hedefi" kutusunun **üzerine** aynı görünümde **"Devreden borç"** kutusu eklenir. - Aylık plana alanlar eklenir (eski alanlar değişmez, varsayılan `null`): - `carriedDebtMinor`: devreden borç (pozitif sayı) - `carriedDebtSource`: `"auto"` ya da `"manual"` - `debtPaymentMinor`: bu ay borca giden tutar (hesaplanır) - `spendableRateBp`: borçlu ayda harcanabilir oranı (varsayılan **4500** = %45) ### A2 · İlk dönem: elle giriş - Önceki tanımlı dönem yoksa "Devreden borç" boş ve düzenlenebilir gelir. Kullanıcı elle girer (`source = "manual"`). - Yardım metni: "Maaş hesabının eksi bakiyesi + kartın tüm borcu (ekstre + dönem içi harcama) + kalan taksitler − hesaptaki artı bakiye." ### A3 · Sonraki dönemler: otomatik - Yeni dönem planı oluşturulurken devreden borç, **önceki dönemin ay sonu borcundan** otomatik dolar (`source = "auto"`). Ay sonu borcunun tanımı için bkz. **C**. - Kullanıcı isterse elle düzeltebilir. Düzeltince `source = "manual"` olur ve kutuda "elle düzeltildi" rozeti görünür. ### A4 · Borç varsa birikim yok, borç odaklı plan - `carriedDebtMinor > 0` iken **birikim hedefi plana dahil edilmez** (0 sayılır). - Planlama sayfasında "Birikim hedefi" kutusu yerine **"Devreden borç"** ve altında **"Bu ay borca giden"** gösterilir. Birikim kutusu gizlenir ya da soluk "Borç bitince açılır" yazısıyla durur. - Panelde de aynı kutu "Devreden borç" yazar (bkz. D). ### A5 · Harcanabilir hesabı (borçlu ay) Devreden borcun tamamını tek ayda düşmek harcanabiliri eksiye sokar. Bu yüzden: ``` Harcanabilir = Toplam gelir × %45 (spendableRateBp ile ayarlanabilir) Bu ay borca giden = Toplam gelir − Sabit giderler − Harcanabilir ``` Kenar durumları: - `Bu ay borca giden` **devreden borçtan büyükse**: borca yalnızca devreden borç kadar gider, kalan tutar birikime yazılır (borç bu ay biter). - `Gelir − Sabit < Gelir × %45` ise (sabitler çok yüksek): Harcanabilir = Gelir − Sabit, borca giden 0, kırmızı uyarı: "Sabit giderler çok yüksek, bu ay borç azalmıyor." - Ekranda formül açıkça yazılsın: `Gelir − Sabit − Bu ay borca giden = Harcanabilir`. Altında küçük satır: "Devreden borç 57.100 · ay sonu hedef 36.376,60." **Kontrol (Aralık 2026 rakamlarıyla):** - Gelir 79.509,64 · Sabit 23.006,90 · Devreden borç 57.100 - Harcanabilir = 79.509,64 × 0,45 = **35.779,34** - Bu ay borca giden = 79.509,64 − 23.006,90 − 35.779,34 = **20.723,40** - Ay sonu hedef borç = 57.100 − 20.723,40 = **36.376,60** - Kenar durumu testi: devreden borç 10.000 → borca giden 10.000, birikime 10.723,40. ### A6 · Borç bitince - Devreden borç 0 olduğunda (otomatik ya da elle) plan normal Kakeibo düzenine döner: `Gelir − Sabit − Birikim hedefi = Harcanabilir`. Birikim kutusu tekrar görünür, %45 kuralı devre dışı kalır. --- ## B · Borçlar sayfası kaldırılsın - Borç sayfası rotası (`/borc` ya da benzeri), menü bağlantısı ve sayfaya özel bileşenler kaldırılır. - **Veri silinmez:** `debtSnapshots` / `installmentPlans` koleksiyonları ve modelleri yerinde kalır. Kullanılmayan servis kodu silinebilir, migration ile koleksiyon düşürülmez. - Taksit yükü bilgisi gerekiyorsa Planlama → Sabit giderler → "Taksitler" satırında öneri olarak kalabilir. - `docs/BORC_TAKIBI.md` dosyasının en üstüne "Bu yaklaşım KAKEIBO_PANEL_ISTEKLERI.md ile değiştirildi" notu eklenir. --- ## C · Ay sonu: "Ne kadar biriktirdim?" → "Ne kadar borç devretti?" ### Tanım (tek doğru kaynak) ``` Ay sonu borcu = banka hesaplarının eksi bakiyeleri (KMH) + kredi kartı tüm borcu (ekstre + dönem içi + provizyon) + kalan taksitler − hesaplardaki artı bakiyeler (nakit, banka, yemek kartı, toplu taşıma) (sonuç eksiyse borç 0, aradaki fark birikimdir) ``` Hesap, dönem bitiş tarihindeki hesap bakiyelerinden yapılır. Transferler (kart ödemesi, ATM, kendi hesapları arası havale) borcu değiştirmez. ### Ekran - **Borç varken** başlık: **"4 · Ne kadar borç devretti?"** - Ana rakam: ay sonu borcu (bir sonraki dönemin devreden borcu olur). - Altında: "Ay başı 78.530,48 → ay sonu X" ve fark. Azaldıysa yeşil "borç Y TL azaldı", arttıysa kırmızı "borç Y TL arttı". - Plan karşılaştırması: "Hedef: Z TL borca gidecekti, gerçekleşen: Y TL". - **Borç yokken** başlık: **"4 · Ne kadar biriktirdim?"**. Değer = ay sonu net artı − ay başı net artı. Eksiyse birikim yazılmaz, "Bu ay birikim yok" denir. - **Plan hedefi asla gerçekleşen olarak gösterilmez.** ### Mevcut hatanın kontrolü Kullanıcı hiç birikim girmedi, hesap sürekli ekside, ama ekranda birikim çıkıyor. Şu dört olasılığı kontrol et: 1. Plan hedefi (C) gerçekleşen yerine yazılıyor olabilir. 2. Hesap yalnızca `gelir − gider` olarak yapılıp sabit giderler, kart borcu ya da KMH faizi düşülmüyor olabilir. 3. Kart ödemesi veya hesaplar arası havale birikim sayılıyor olabilir. 4. Eksi sonuç `Math.max(0, …)` ile sıfıra çekiliyor ya da işareti kayboluyor olabilir. **Kontrol (bankayla doğrulanmış):** 31 Ekim ay sonu borcu **78.530,48**, 13 Kasım **79.078,85** → "borç **548,37 TL arttı**". Birikim gösterilmez. --- ## D · Panel (dashboard) ### D1 · Plan satırı ``` [ Toplam gelir ] − [ Sabit giderler ] − [ Devreden borç ] − [ Toplam birikim ] = [ Harcanabilir ] ``` - "Devreden borç" kutusunun ana rakamı **bu ay borca giden** tutardır. Küçük satırda devreden borcun tamamı yazar: "toplam 57.100". Formül böylece eksiye düşmez. - Borç varken birikim kutusu 0 ve soluk ("borç bitince"). Borç yokken devreden borç kutusu soluk/gizli. ### D2 · Ödeme türleri satırı (anlık bakiye) `[ Nakit ] [ Kredi kartı ] [ Banka kartı + Havale/EFT ] [ Yemek kartı ] [ Toplu taşıma kartı ]` | Kutu | Kaynak (hesap türü) | Ana rakam | Alt satır | |---|---|---|---| | Nakit | `cash` | bakiye | bu ay nakit harcama (minibüs, taksi dahil) | | Kredi kartı | `credit_card` | **dönem içi borç** (ör. −29.713,54) | toplam borç (taksit dahil) · son ödeme · kalan limit | | Banka kartı + Havale/EFT | `bank` | bakiye (ör. **−39.264,44**, kırmızı) | KMH kullanılan / limit · bu ay çıkış | | Yemek kartı | `meal_card` | bakiye | bu ay harcanan | | Toplu taşıma kartı | **yeni** `transit_card` | bakiye | bu ay yükleme / harcama | Kurallar: - **Ödeme türü = işlemin hesabının türü.** Defter kodları: N `cash`, KK `credit_card`, BK `bank`, YK `meal_card`, TT `transit_card`. - **Havale/EFT** banka hesabından çıktığı için "Banka kartı" kutusunda gider sayılır. Kendi hesapları arası havale (maaş → Enpara, kızın ek hesabı) transferdir. - **Kart ödemesi ve ATM çekimi transferdir**, hiçbir kutuda gider değildir. - **İstanbulkart:** yükleme, banka/nakit hesabından `transit_card` hesabına transfer. Binişler ulaşım gideri (ya da ay sonunda tek düzeltme kaydı). İçe aktarmada "İSTANBULKART YUKLEME" yeni aktarmalarda bu hesaba transfer olarak eşlensin; eski kayıtlar değişmesin. - `transit_card` için: `shared/accounts.ts` → `ACCOUNT_TYPES`, hesap formu, `tr.ts` ("Toplu taşıma kartı" / "Toplu taşıma kartları"), ikon. Enum genişlediği için migration gerekmez. - Her kutuda **son içe aktarma / mutabakat tarihi** küçük yazılsın. Bankayla farklıysa mevcut mutabakat akışına bağlantı. - **Kontrol (13 Kasım):** Banka kartı **−39.264,44**, Kredi kartı **−29.713,54**. 235 TL provizyon "onay bekleyen" olarak ayrı. ### D3 · Yerleşim - Orta alan çok dar. Ana kapsayıcının dar `max-w-*` sınırı kaldırılsın ya da genişletilsin (ör. `max-w-screen-2xl`, yanlarda `px-4 lg:px-8`). - Kutu satırları ekran genişliğine yayılsın: - Plan satırı: mobilde 2, tablette 3, masaüstünde 5 sütun. - Ödeme türleri: mobilde 2, masaüstünde 5 sütun. - Altındaki kartlar iki sütun (`lg:grid-cols-2`). - Kutular arasındaki "−" ve "=" işaretleri masaüstünde görünsün, mobilde gizlensin. --- ## E · Defter: Açıklama varsayılan büyük harf - İşlem formu (`transaction-form.tsx`, `name="description"`) ve defter satırlarındaki açıklama alanları. - `toLocaleUpperCase("tr-TR")`: hem yazarken (onChange) hem sunucuda (zod `.transform`). - Mevcut kayıtlar toplu değiştirilmez. ## F · Planlama: Sabit gelirler / Sabit giderler kutuları büyük harf - Bu iki bölümdeki metin kutuları (kalem adı) aynı kuralla. - Ortak yardımcı: `shared/format.ts` → `upperTr(s)`. Birim testi: `"elma market"` → `"ELMA MARKET"`, `"istanbul"` → `"İSTANBUL"`, `"ılık"` → `"ILIK"`. ## G · Metin değişiklikleri (`tr.ts`) - "Birikim hedefi" → borçlu ayda "Devreden borç" / "Bu ay borca giden". - Ay sonu: "Ne kadar biriktirdim?" → borçlu ayda "Ne kadar borç devretti?". - Panel kutusu: "Devreden borç". ## H · Kabul kriterleri - [ ] Planlamada "Devreden borç" kutusu birikim hedefinin üstünde. İlk dönemde elle, sonraki dönemlerde otomatik dolar, elle düzeltilebilir. - [ ] Borç varken birikim hedefi plana girmez. Harcanabilir = gelir × %45. A5 kontrol rakamları testte birebir. - [ ] Borç 0 olunca plan birikim düzenine döner. - [ ] Borçlar sayfası ve menü bağlantısı yok. Verisi duruyor. - [ ] Ay sonu "Ne kadar borç devretti?" gösteriyor. Test: 78.530,48 → 79.078,85 = "borç 548,37 TL arttı". - [ ] Panelde plan satırı `Gelir − Sabit − Devreden borç − Birikim = Harcanabilir` ve ödeme türleri satırı var. 13 Kasım: −39.264,44 ve −29.713,54. - [ ] Kart ödemesi, ATM ve kendi hesaplar arası havale hiçbir kutuda gider değil. - [ ] Panel orta alanı geniş ekranda yayılıyor, mobilde taşma yok. - [ ] Açıklama ve sabit gelir/gider adları Türkçe büyük harfle kaydediliyor. Eski kayıtlar değişmedi. - [ ] Lint, typecheck ve testler geçiyor. CHANGELOG güncel. --- ## Kakeibo uyarlaması ve kararlar (kullanıcı, 14 Kasım 2026) Belge butcem için yazıldı; Kakeibo karşılıkları ve kullanıcı kararları: 1. **Panel bakiyeleri (D2):** son ay sonu ölçümünden (`debt_snapshots`) gelir; canlı banka eşleşmesi yok. Önceki aydan devreden yoksa planlamada elle yazılır. 2. **Borçlu aylarda Kakeibo'nun kendi aşım devri (`carryovers`) üretilmez** (çifte sayım olmasın). 3. **Taksit planları için ayrı ekran yok.** Taksitler sabit giderlere elle eklenir; taksit önerileri kaldırılır, `installment_plans` verisi yerinde kalır. 4. **%45 kuralı varsayılan:** açık dönem dahil, borç > 0 olan her dönemde. 5. Mevcut veriye dokunulmaz: yalnızca alan eklenir (`periods.spendable_rate_bp`, `payment_methods.type`), eski kayıtlar toplu değiştirilmez; `periods.opening_debt` (B1'den) devreden borcun elle değeridir.