From d3e012f50b7d51dcdbe258f72ae6122b9bfe4496 Mon Sep 17 00:00:00 2001 From: suphicakir Date: Sat, 14 Nov 2026 04:59:55 +0300 Subject: [PATCH] =?UTF-8?q?fix(geli=C5=9Ftirme):=20npm=20run=20dev=20a?= =?UTF-8?q?=C3=A7=C4=B1l=C4=B1=C5=9F=C4=B1nda=20yetim=20kalm=C4=B1=C5=9F?= =?UTF-8?q?=20eski=20backend=20s=C3=BCrecini=20kapat?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 5.5 --- CLAUDE.md | 2 +- docs/MEMORY.md | 2 ++ package.json | 2 +- scripts/stop-stale-api.sh | 17 +++++++++++++++++ 4 files changed, 21 insertions(+), 2 deletions(-) create mode 100755 scripts/stop-stale-api.sh diff --git a/CLAUDE.md b/CLAUDE.md index 4dc9eb6..7508cbe 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -62,7 +62,7 @@ npm run icons # frontend/brand/*.svg → favicon, PWA, Apple, Tauri ikonl npm run db:backup # kakeibo_dev → ./backups (canlı yedek: docs/DEPLOY.md §6) npm run db:restore -- [--force] ``` -- `npm run dev` öncesinde DB otomatik başlar (`predev`). +- `npm run dev` öncesinde DB otomatik başlar (`predev`); `dev:api` önce `scripts/stop-stale-api.sh` ile 8080'de yetim kalmış eski `kakeibo` sürecini kapatır (yalnız adı kakeibo ise). Belirti: yeni uç nokta "Kayıt bulunamadı" (404) → eski backend çalışıyor. - Yerel MongoDB host portu **27020** (27017 sistem mongod, 27018/27019 diğer projeler). - Frontend lint: **oxlint** (Vite şablonu varsayılanı; ESLint yerine). `components/ui/**` shadcn dosyaları. - Frontend: Tailwind v4 (`src/index.css` token'ları), shadcn/ui (style `radix-nova`, `cn` paketi), `@/` → `src/`. Renkler: `bg-needs`/`text-needs-fg`/`bg-needs-soft` (wants, culture, unexpected aynı), `text-income`/`text-expense`/`text-warning`. SVG/JS'te (Recharts vb.) ham değişken kullan: `var(--needs)`, `var(--primary)` — `@theme inline` yüzünden `--color-*` derlenmiş CSS'te olmayabilir. Tutarlarda `money` sınıfı. Butonlar ≥44 px (shadcn boyutları büyütüldü). diff --git a/docs/MEMORY.md b/docs/MEMORY.md index 2487320..3793d52 100644 --- a/docs/MEMORY.md +++ b/docs/MEMORY.md @@ -159,3 +159,5 @@ - **Borç takibi B1 (2026-11-14):** Migration v4 (3 koleksiyon) + indeksler + `backup::KINDS`. Taksit planı `first_month` ile (içe aktarmada `asOf − paidCount + 1`); kaynak belgedeki tüm kabul rakamları birim + entegrasyon testinde birebir (78.530,48 / 79.078,85 / devreden 64.352,79 / yükler 4.311,82…182,02 / kalan 14.177,69 ve 9.865,87). Ay sonu hedefi toplam borç cinsinden (= ay başı − C − taksit; yol haritası da toplam). Kart/IBAN: 12+ haneli sayı reddedilir. Testler `tests/debt.rs` (3) + 6 birim; 2 bilinçli bozma yakalandı. - **Borç takibi B2 (2026-11-14):** Panel en üstünde `DebtCard` (yalnız ölçüm varsa; değişim yeşil/kırmızı ok, başlangıç→0 ilerleme, tahmini bitiş, döküm), `/borc` (grafik: gerçek düz + hedef kesikli, ilk ölçümden başlar, eksen ay başları; ölçüm tablosu tam genişlik; form [toplam canlı, kalan taksit önerisi; form anahtarı taksit planlarına bağlı → içe aktarmadan sonra öneri dolar]; yol haritası düzenleyici; içe aktar ön izleme→onay), `/taksitler` (CSS çubuk 6 ay, planlar ödenen/kalan, yeni taksitte borç varken uyarı). Menüde "Borç". E2E 33 kontrol (belge JSON'u içe aktarılarak; kabul rakamları ekranda). Bulunan: öneri boş kalıyordu (form içe aktarmadan önce kurulmuştu); eksende aynı ay iki kez; tablo sıkışması. - **Borç takibi B3 (2026-11-14) → B1–B3 ✅:** Plan'da "Bu ayın borcu" (`PeriodDebtSection`, yalnız borç verisi varsa): ay başı (ölçümden / elle, `useSetOpeningDebt`, "Son ölçüme dön"), devreden banka borcu, borç ödemesi (C), bu ayın taksiti, hedef ay sonu + yol haritası farkı (üstünde kırmızı / altında yeşil), dönem içi son ölçüme göre azalma vs C+taksit çubuğu, "Taksitler" sabit gideri tek tık (adı `findInstallmentItem`: taksit/taksitler, tr küçük harf; tutar farklıysa uyarı). `SummaryTiles debtPayment`. E2E 18 kontrol (hedef 67.218,66 = 78.530,48 − 7.000 − 4.311,82; harcanabilir 53.000 → 48.688,18). İçe aktarma dosyası `samples/` (gitignore) — 12+ haneli sayı yok. +- **Dev sunucusu düzeltmesi (2026-11-14):** Kullanıcı /borc'ta "Kayıt bulunamadı" gördü: 8080'de 00:40'tan kalma eski backend (borç kodu yok) çalışıyordu; yeniden başlatılan `npm run dev`'in cargo watch'ı portu alamıyordu (ikinci kez). Kök neden: `concurrently -k` cargo watch'ı kapatır, `cargo run`'ın çocuğu kakeibo bazen yetim kalır. Çözüm: `scripts/stop-stale-api.sh` (`dev:api` başında; 8080'i tutan süreç adı `kakeibo` ise kapatır, değilse uyarır). 8091'de denendi. + diff --git a/package.json b/package.json index db45c07..791f853 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "postinstall": "npm --prefix frontend install", "predev": "npm run db:up", "dev": "concurrently -k -n api,web -c blue,green \"npm:dev:api\" \"npm:dev:web\"", - "dev:api": "cd backend && cargo watch -q -c -w src -w Cargo.toml -x run", + "dev:api": "bash scripts/stop-stale-api.sh 8080 && cd backend && cargo watch -q -c -w src -w Cargo.toml -x run", "dev:web": "npm --prefix frontend run dev", "predev:host": "npm run db:up", "dev:host": "concurrently -k -n api,web -c blue,green \"npm:dev:api\" \"npm --prefix frontend run dev -- --host\"", diff --git a/scripts/stop-stale-api.sh b/scripts/stop-stale-api.sh new file mode 100755 index 0000000..c53cdc8 --- /dev/null +++ b/scripts/stop-stale-api.sh @@ -0,0 +1,17 @@ +#!/usr/bin/env bash +# `npm run dev` öncesi: önceki oturumdan yetim kalmış backend (8080) varsa kapat. +# concurrently -k, cargo watch'ı durdurur ama `cargo run`'ın başlattığı kakeibo süreci bazen +# sinyali almaz ve portu tutmaya devam eder → yeni sürüm açılamaz, eski kod çalışır. +# Yalnızca süreç adı "kakeibo" ise kapatır; başka bir uygulamaya dokunmaz. +PORT="${1:-8080}" +for pid in $(ss -ltnpH "sport = :$PORT" 2>/dev/null | grep -o 'pid=[0-9]*' | cut -d= -f2 | sort -u); do + name=$(cat "/proc/$pid/comm" 2>/dev/null) + if [ "$name" = "kakeibo" ]; then + echo "Eski backend kapatılıyor (pid $pid, port $PORT)" + kill "$pid" 2>/dev/null + for _ in 1 2 3 4 5 6 7 8 9 10; do kill -0 "$pid" 2>/dev/null || break; sleep 0.3; done + else + echo "Uyarı: $PORT portunu başka bir uygulama kullanıyor ($name, pid $pid); dokunulmadı." >&2 + fi +done +exit 0