Files
kolaytercih/docs/gece-vardiyasi/2026-09-22/07-p1-risk-etiketi.md
bilalgursen 2dbc8b5039 fix(erisilebilirlik): risk göstergesinin adı satırda yazılı dursun
/sonuc program tablosunda risk yalnız renkli bir noktaydı (aria-hidden,
görünür metin yok); /listem'de etiket vardı ama sm altında sr-only idi.
Trafiğin büyük kısmı mobil olduğu için gerçek kullanıcı yalnız rengi
görüyordu. AGENTS.md: "kırmızı/sarı/yeşil her zaman metin etiketiyle
birlikte, renk tek başına anlam taşımaz."

- program-tablosu: nokta + RISK_ETIKET[risk] kalıbı rapor-listesi'nden
  birebir kopyalandı; boş kalan ilk sütun başlığı "Risk" oldu.
- rapor-listesi: risk etiketindeki sr-only sm:not-sr-only kaldırıldı.

Yeni bileşen/sabit/olay yok; etiket metninin tek kaynağı src/lib/risk.ts
içindeki RISK_ETIKET ve o dosyaya dokunulmadı.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-23 00:16:06 +03:00

69 lines
6.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 07 — P1: Riskin adı satırda yazsın
Dal: `gece/0922-risk-etiketi` · Ajan: `yazilimci` · Kapsam: CEO kararları §3 / P1
---
## Özet (5 madde)
1. `/sonuc` program tablosunda risk göstergesi artık **renkli nokta + yazılı ad**. Etiketin kaynağı `RISK_ETIKET` (`src/lib/risk.ts`); `risk.ts`'e dokunulmadı.
2. `/listem` (rapor listesi) risk etiketindeki `sr-only sm:not-sr-only` kaldırıldı — etiket artık 390px dahil her genişlikte görünüyor.
3. Yeni bileşen, yeni sabit, yeni olay yok. İki dosya değişti, toplam +21/−12 satır.
4. `/sonuc` tablosunda **boş olan ilk sütun başlığına "Risk" yazıldı** — şartnamede açıkça yazmıyordu, sapma olarak aşağıda gerekçelendirildi.
5. `next typegen` + `tsc --noEmit` + `lint` temiz (çalıştırılarak doğrulandı). Build alınmadı (iş tanımı istemiyordu), tarayıcıda doğrulama yapılmadı (AGENTS.md).
---
## Ne değişti
### `src/features/liste/components/program-tablosu.tsx`
- `RISK_ETIKET` import'a eklendi.
- Satırın ilk hücresi (`ProgramSatiri`, eski 306-314): `block size-2.5 … aria-hidden` olan tek nokta yerine,
`rapor-listesi.tsx:262-270` kalıbının birebir aynısı: `inline-flex items-center gap-1.5` kabında
`size-2.5 shrink-0 rounded-full` nokta (`aria-hidden`) + yanında `{RISK_ETIKET[risk]}`.
Hücreye `text-xs font-medium` verildi — rapor listesindeki risk hücresiyle aynı tipografi.
- Tablo başlığı: `<TableHead className="w-8" />` → `<TableHead className="w-8 pl-4 pr-0">Risk</TableHead>`.
- `RISK_NOKTA`'nın üstüne renk dili yorumu eklendi (rapor-listesi'ndeki yorumun eşi).
### `src/features/rapor/components/rapor-listesi.tsx`
- `:267` `<span className="sr-only sm:not-sr-only">` → `<span>`; etiket her zaman görünür.
- `RISK_STIL` üstündeki yorumdaki "dar ekranda sr-only olarak kalır" cümlesi gerçeğe göre düzeltildi.
Başka dosyaya dokunulmadı. `src/lib/risk.ts` değişmedi.
---
## Kabul kriterleri
| # | Kriter | Durum | Nasıl doğrulandı |
|---|---|---|---|
| 1 | `/sonuc` ve `/listem` satırlarında risk **yazıyla** görünür, kaynak `RISK_ETIKET` | ✔ | Koddan: `program-tablosu.tsx` risk hücresi `{RISK_ETIKET[risk]}` basıyor; `rapor-listesi.tsx`'te etiketi gizleyen tek sınıf (`sr-only`) kalktı. `grep -n "sr-only" ` ile risk hücresinde kalıntı yok |
| 2 | 390px'te etiket kesilmez, satır taşmaz | ✔ (koddan çıkarım — tarayıcıda bakılmadı) | `TableCell` varsayılanı zaten `whitespace-nowrap`, yani etiket kesilmez/sarmalanmaz. Program hücresi `max-w-0 w-full` + `truncate` olduğu için artan genişliği o sütun yutar, tablo yatay taşmaz. Genişlik bedeli aşağıda |
| 3 | `RISK_NOKTA` rengi korunur ama tek başına anlam taşımaz | ✔ | `RISK_NOKTA` haritası aynen duruyor; nokta `aria-hidden` kaldı, anlamı taşıyan artık yanındaki metin |
| 4 | `tsc` + `lint` temiz | ✔ | `pnpm exec next typegen` → "Types generated successfully"; `pnpm exec tsc --noEmit` → çıkış 0, hiç çıktı yok; `pnpm lint` → hiç çıktı yok |
---
## Şartnameden sapmalar (2 adet, ikisi de küçük)
1. **`/sonuc` tablosunun ilk sütun başlığına "Risk" yazıldı.** Şartname yalnız satırdan söz ediyordu. Gerekçe: o sütun artık ikonik değil metinsel içerik taşıyor; başlığı boş bırakmak hem `rapor-listesi.tsx`'teki eşdeğer sütunla (orada başlık "Risk") çelişirdi hem de başlıksız metin sütunu bırakırdı. Genişlik bedeli yok — başlık ("Risk", ~30px) hücre içeriğinden dar, sütunu genişletmiyor. Başlığa `pl-4 pr-0` verildi ki hücrelerle hizalansın (yine `rapor-listesi.tsx:380`'deki `#` başlığının deseni).
2. **Tablonun yer darlığı için icat yapılmadı**, şartnamedeki yol izlendi: mevcut sütun yapısı korundu, etiket noktanın yanına `text-xs` (rapor listesiyle aynı punto) ile kondu. Daha küçük punto (`text-[10px]`) denenmedi çünkü kazancı ~5px, bedeli ise AGENTS.md'nin "aynı eleman iki yerde birebir aynı olsun" kuralından sapmak olurdu.
---
## Bilal'in gözle bakması gereken (tek madde)
**`/sonuc` tablosu 390px'te.** Risk sütunu artık ~86px yer kaplıyor (16px sol boşluk + 10px nokta + 6px boşluk + en uzun etiket "Az riskli" ≈ 55px). Bu genişliği program adı sütunu veriyor; o sütun `truncate` olduğu için satır taşmıyor ama **program adı daha erken kısalıyor** (kabaca 150px'ten ~85px'e; üniversite logosu da aynı hücrede). Kesilme yok, kısalma var. Tarayıcıda doğrulanmadı (AGENTS.md gereği açmadım) — telefonda bir bakış yeterli. Dar gelirse iki ucuz seçenek var, ikisi de ayrı karar: (a) etiketi `text-[10px]`e düşür, (b) `Kontenjan` sütununun `sm` eşiğini yükselt.
---
## Merge sonrası doğrulanması gerekenler
- `/sonuc` üç dilim sekmesinde de (hayal/dengeli/güvenli) etiket doğru kelimeyi yazıyor mu; taban verisi olmayan satırda (risk `null`) hücre boş kalıyor mu.
- `/listem` mobilde risk sütunu: kilitli satırlarda hücre içeriği hâlâ yalnız asma kilit ikonu (aşağıdaki nota bakın).
## Kapsam dışı bıraktıklarım (dokunmadım, sahibi ben değilim / şartname dışı)
- **`rapor-listesi.tsx:264` "Pakette" etiketi hâlâ `sr-only sm:not-sr-only`.** Yani mobilde kilitli satırın risk hücresinde yalnız asma kilit ikonu görünüyor. Bu bir renk ihlali değil (ikon, renk değil) ve şartname yalnız `:267`'yi kapsıyordu, o yüzden dokunmadım. Ama artık aynı sütunda bir satır "Az riskli" yazarken diğerinin sadece ikon göstermesi tutarsız duruyor; sütun genişliği zaten risk etiketine göre belirlendiği için bunu görünür yapmanın **ek genişlik maliyeti yok**. Tek satırlık iş, ayrı karar.
- **`liste-cekmecesi.tsx:426`** — çekmecedeki tercih satırlarında risk yalnız renkli nokta (`aria-label` var, görünür metin yok). Aynı çekmecenin başlığında renk dilini açıklayan yazılı bir açıklama listesi (`:172-184`) olduğu için tam ihlal sayılmaz; yine de bu, risk renginin metinsiz göründüğü **üçüncü** yüzey. Şartnamede yok, dosya sahibi değilim — backlog adayı.