Vardiya pazarı: post-it panosunda ücretli vardiya ilanları ve teklifler - #2
Draft
muratmuzaffer wants to merge 8 commits into
Draft
Vardiya pazarı: post-it panosunda ücretli vardiya ilanları ve teklifler#2muratmuzaffer wants to merge 8 commits into
muratmuzaffer wants to merge 8 commits into
Conversation
Sürücüler vardiyalarını taban fiyatla ilana koyar, diğer sürücüler teklif verir. Taban fiyat kuralı API ve veritabanı trigger'ında birlikte korunur; Supabase yoksa yerel JSON deposuna düşer. Co-authored-by: murat <muratmuzaffer@users.noreply.github.com>
İlanlar mantar panoya iğnelenmiş post-it notlar olarak görünür. Kullanıcı kendini seçer, ilana taban fiyatın altına düşmeyen teklif verir; ilan sahibi teklifi kabul ederek satışı kapatır. Co-authored-by: murat <muratmuzaffer@users.noreply.github.com>
Mantar dokusu, iğneler ve not eğimleri ekranda ayırt edilemeyecek kadar hafifti; kontrast ve boyutlar artırıldı. Kıvrılan köşenin alt satırları kesmesi için içeriğe sağ pay verildi ve post-it'lerde kısa tarih kullanılarak mobilde satır kaydırma azaltıldı. Co-authored-by: murat <muratmuzaffer@users.noreply.github.com>
Pazar tipleri market-types.ts'e, post-it stilleri CSS modülüne taşındı; types.ts, globals.css ve menü dosyalarındaki düzenlemeler geri alındı. Böylece özellik yalnızca yeni dosyalardan oluşuyor ve farklı bir taban üzerine çakışmasız birleşiyor. Sayfa, mevcutsa değişimleri uygulayan fetchScheduleWithSwaps'i otomatik seçer. Co-authored-by: murat <muratmuzaffer@users.noreply.github.com>
Menü iki farklı şekilde kurulmuş olabiliyor (APP_NAV_ITEMS listesi veya AppShell nav prop'u); betik hangisi varsa onu yamalar, mobil alt menüyü dört sekmeye genişletir ve tekrar çalıştırılmaya karşı güvenlidir. Co-authored-by: murat <muratmuzaffer@users.noreply.github.com>
Co-authored-by: murat <muratmuzaffer@users.noreply.github.com>
01bb6aa, bulut terminalinde çalıştırılan menü betiğinin ürettiği schedule-client/swap-client değişikliklerini yakalamıştı. Bu dalın yalnızca yeni dosya eklemesi gerekiyor; aksi halde farklı bir taban üzerine birleştirmede çakışma çıkar. Menü girişi merge sonrası scripts/add-pazar-menu.mjs ile eklenir. Co-authored-by: murat <muratmuzaffer@users.noreply.github.com>
…tory. Sürücü isim seçimi, kişiye özel IBAN, ilan düzenleme, admin giriş logları ve pazar satışlarının değişim geçmişinde ayrı görünmesi eklendi. Co-authored-by: Cursor <cursoragent@cursor.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Sürücülerin vardiyalarını bir taban fiyatla ilana koyduğu, diğer sürücülerin kendilerini seçip teklif verdiği yeni bir Vardiya Pazarı sayfası (
/pazar) ekler. İlanlar mantar panoya iğnelenmiş post-it notlar olarak görünür.vardiya-pazari-demo.mp4
Nasıl çalışıyor
satıldıolur, panoda soluk bir “Satıldı” damgasıyla kalır. İlan sahibi ilanı panodan kaldırabilir.Taban fiyat kuralı hem API'de hem de veritabanı trigger'ında ayrı ayrı korunuyor, böylece doğrudan veritabanına yazılsa bile kural geçersiz kılınamıyor.
Bu dal hiçbir mevcut dosyaya dokunmuyor
Bu depodaki
master(3d8665b), yerel makinede yapılıp henüz push edilmemiş çalışmaları içermiyor — ortak mesai sayfası (/ortak), çoklu vardiya değişimi, iptal talebi/admin onayı akışı, mobil alt menü ve0014–0017migration'ları burada yok.Bu yüzden özellik tamamen kendi dosyalarında tutuldu. Dal
master'a göre yalnızca yeni dosya ekliyor, tek bir mevcut dosyayı bile değiştirmiyor:Bunu sağlamak için:
types.tsyerine yenimarket-types.tsdosyasındaglobals.cssyerinemarket.module.css(CSS modülü) içindemarket-client.tsxartıkAppShell'enavprop'u geçmiyor, böylece menüsü merkezileştirilmişAppShellsürümüyle de derleniyorpazar/page.tsx, varsa değişimleri çizelgeye uygulayanfetchScheduleWithSwaps'i, yoksafetchSchedule'ı otomatik seçiyorMenü girişi ise
node scripts/add-pazar-menu.mjsile ekleniyor. Betik hangi menü yapısı olduğunu kendisi algılar:app-nav.tsxiçindekiAPP_NAV_ITEMSlistesi varsa oraya girişi ekler ve mobil alt menüyü dört sekmeye genişletir; yoksaAppShellnavprop'unu kullanan eski sayfaları yamalar. Tekrar çalıştırılması güvenlidir.Kurulum
Ardından Supabase SQL Editor'da
supabase/migrations/0018_shift_market.sqlçalıştırılıpnpm run deploy:shiftsile deploy edilir. Migration çalıştırılmadan ilan verilmeye çalışılırsa arayüz sessizce başarısız olmaz, doğrudan bu dosyayı çalıştırmayı söyleyen bir hata gösterir.Test
npm run buildvetsc --noEmittemiz geçiyor. Kurallar API üzerinden doğrulandı:Teklif taban fiyatın altında olamaz: en az 250 ₺Kendi ilanınıza teklif veremezsinizTeklifi yalnızca ilan sahibi kabul edebilirBu ilan artık teklife açık değilArayüz tarayıcıda masaüstü ve mobil (390×844) genişliklerinde kontrol edildi. Görsel inceleme sonrası iki düzeltme yapıldı: mantar dokusu/iğne/eğim kontrastı artırıldı ve kıvrılan köşenin not metinlerini kesmesi giderildi. CSS modülüne taşındıktan sonra tüm görsel öğeler yeniden doğrulandı.
Menü betiği hem
APP_NAV_ITEMShem denavprop düzeninde ayrı ayrı test edildi; ikinci çalıştırmada değişiklik yapmadığı doğrulandı.To show artifacts inline, enable in settings.