chore: add i18n release hardening gates
This commit is contained in:
@@ -0,0 +1,82 @@
|
||||
---
|
||||
title: Faz 7 Auth, Hata ve Erişilebilirlik Bütünlüğü
|
||||
description: Auth öncesi locale seçimi, stabil hata kodları, edge ekranlar ve a11y metinleri çıktıları.
|
||||
phase: 7
|
||||
status: completed
|
||||
last_updated: 2026-07-19
|
||||
---
|
||||
|
||||
# Faz 7 Auth, Hata ve Erişilebilirlik Bütünlüğü
|
||||
|
||||
Faz-7, kullanıcı oturumu oluşmadan önce ve sistem edge ekranlarında görünen
|
||||
metinlerin locale modeliyle tutarlı çalışmasını tamamlar.
|
||||
|
||||
## Tamamlananlar
|
||||
|
||||
- Login ekranı aktif instance dillerini listeleyen locale seçici ile açılır.
|
||||
- Register ekranı aynı locale seçiciyi kullanır ve ilk admin kurulumu instance
|
||||
default locale/cookie davranışına bağlanır.
|
||||
- Auth shell sol pazarlama alanı, feature etiketleri ve footer kopyası `auth`
|
||||
namespace'inden beslenir.
|
||||
- Forgot/reset password ekranları eklendi ve katalog metinleriyle render edilir.
|
||||
- 404 ekranı server catalog üzerinden `common.notFound.*` anahtarlarını kullanır.
|
||||
- Error boundary için built-in TR/EN fallback eklendi.
|
||||
- Maintenance copy sözleşmesi `common.maintenance.*` anahtarlarıyla kataloglandı.
|
||||
- Login/signup server action redirect'leri raw mesaj yerine stabil `code`
|
||||
parametresine taşındı.
|
||||
- Portal invite error/success redirect'leri stabil auth code kullanır.
|
||||
- Invite kabulünden sonra invitation locale'i cookie'ye yazılır; login ekranı aynı
|
||||
dilde açılır.
|
||||
- `/api/i18n/locale` response'u kullanıcı metni yerine `messageKey` döndürür.
|
||||
- Locale select kontrolünde label + `aria-label` korunur.
|
||||
- Auth formlarındaki label, link ve pending metinleri katalogdan gelir.
|
||||
- Interpolation ve plural davranışı built-in TR/EN katalogları için smoke test ile
|
||||
doğrulandı.
|
||||
- RTL temel direction helper smoke testi eklendi.
|
||||
|
||||
## Hata kodu sözleşmesi
|
||||
|
||||
Auth sayfaları query üzerinden aşağıdaki modeli kabul eder:
|
||||
|
||||
```text
|
||||
/login?error=true&code=auth.messages.invalidCredentials
|
||||
/register?error=true&code=auth.messages.signupFailed
|
||||
/login?code=auth.invite.success
|
||||
```
|
||||
|
||||
Geriye dönük uyumluluk için eski `message` parametresi okunur; yeni server
|
||||
action'lar raw mesaj üretmez.
|
||||
|
||||
## Bildirim/e-posta locale sözleşmesi
|
||||
|
||||
İleride e-posta veya notification sistemi eklendiğinde locale önceliği şu
|
||||
sırayı izlemelidir:
|
||||
|
||||
1. Client portal hesabı için `clients.portal_locale`
|
||||
2. Auth user preference için `user_preferences.language`
|
||||
3. Invite veya event üzerinde snapshot locale
|
||||
4. Instance default locale
|
||||
5. Built-in fallback `tr`
|
||||
|
||||
Template key'leri UI kataloglarıyla aynı namespace mantığını kullanmalı, fakat
|
||||
uzun mail içerikleri ayrı `notification` veya `email` namespace'ine taşınmalıdır.
|
||||
|
||||
## RTL notu
|
||||
|
||||
`directionForLocale("ar" | "fa" | "he" | "ur")` temel RTL direction üretir.
|
||||
Faz-7 smoke testi auth shell ve form katmanının direction bilgisini bozmadığını
|
||||
doğrular. Tam görsel RTL polish için sonraki hardening fazında sayfa bazlı görsel
|
||||
kontrol önerilir.
|
||||
|
||||
## Verification
|
||||
|
||||
Çalıştırılan komutlar:
|
||||
|
||||
```bash
|
||||
pnpm i18n:phase7-smoke
|
||||
pnpm typecheck
|
||||
pnpm build
|
||||
git diff --check
|
||||
```
|
||||
|
||||
Sonuçlar başarılı olduğunda Faz-7 tamamlanmış kabul edilir.
|
||||
Reference in New Issue
Block a user