Skip to content

feat: multilingual admin broadcast/announcement system#18

Merged
kemalcalak merged 19 commits into
mainfrom
broadcast
Jun 14, 2026
Merged

feat: multilingual admin broadcast/announcement system#18
kemalcalak merged 19 commits into
mainfrom
broadcast

Conversation

@kemalcalak

Copy link
Copy Markdown
Owner

No description provided.

@kemalcalak kemalcalak self-assigned this Jun 14, 2026
@kemalcalak

Copy link
Copy Markdown
Owner Author

/review — 3 bulgu

1. Route doğrudan repository çağırıyor (service katmanı atlanmış)

Dosya: app/api/routes/announcements.py#L4-L15
Kategori: review-md-compliance · Önem: blocker

get_active_announcement handler'ı app.repositories.announcement.get_active_banner'ı doğrudan import edip route içinde await ediyor. Bu, api → services → repositories → models akışını kırıyor. Aynı PR'daki app/api/routes/admin/broadcast.py kuralı doğru uygulayıp servisleri kullanıyor; tutarsız olan tek nokta bu route. Beş bağımsız reviewer da aynı ihlali işaretledi.

CLAUDE.md / REVIEW.md §3.1: "api/routes/ never calls repositories directly — always goes through services/."

Öneri: app/services/announcement.py içine async def get_active_banner_service(session) ekle; route yalnızca bu servisi çağırsın ve AnnouncementRead/ActiveBannerResponse map'lemesi serviste yapılsın.


2. _SafeDict.__missing__ metodunda docstring eksik

Dosya: app/core/broadcast_templates.py#L122-L123
Kategori: review-md-compliance · Önem: minor

__missing__ metodu, eksik placeholder'ı olduğu gibi döndürüyor ancak hiçbir docstring taşımıyor. Sınıf docstring'i metodu kapsamaz; her fonksiyonun en az bir satır İngilizce docstring'i olmalı.

CLAUDE.md hard rule: "All functions must have a docstring — minimum one line, always in English."

Öneri: Metoda """Return the placeholder marker intact when the key is absent.""" gibi tek satırlık bir İngilizce docstring ekle.


3. Tanımlayıcıyı tekrarlayan gereksiz yorum: ALL = "all" # every user

Dosya: app/schemas/announcement.py#L29-L29
Kategori: code-comment · Önem: minor

ALL enum değeri zaten "herkesi" ifade ediyor; # every user yorumu ismi paraphrase etmekten öteye geçmiyor, ek bir sınır/istisna bilgisi vermiyor. Repo stili açıkça anlaşılanı tekrar eden yorumları önermiyor.

Öneri: Yorumu kaldır. Gerçekten ayırt edici bir bilgi varsa (örn. pasif hesapları da kapsadığı) onu yaz: # includes inactive accounts.


🤖 Generated with Claude Code

@kemalcalak

Copy link
Copy Markdown
Owner Author

/review — temiz

Önceki review'da işaretlenen 3 bulgu giderildi:

  • Route → repository doğrudan çağrı (blocker): app/services/announcement.py içine get_active_banner_service eklendi; route artık servis üzerinden geçiyor — api → services → repositories akışı korunuyor.
  • _SafeDict.__missing__ docstring eksik: tek satır İngilizce docstring eklendi.
  • Gereksiz yorum (ALL = "all" # every user): kaldırıldı.

REVIEW.md kurallarına aykırı veya tespit edilebilir bir bug kalmadı.

🤖 Generated with Claude Code

@kemalcalak kemalcalak merged commit 699e870 into main Jun 14, 2026
1 check passed
@kemalcalak kemalcalak deleted the broadcast branch June 14, 2026 16:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant