Septum'a Katkıda Bulunma
Katkıda bulunmak için ayırdığınız zaman için teşekkürler. Septum gizlilik öncelikli bir AI ara katmanı — her katkının bu çıtayı koruması önemli.
Nasıl katkıda bulunabilirsiniz
- Hata bildirimi — yeniden üretim adımları, beklenen vs gerçek davranış, ortam bilgisi (OS, Docker ya da yerel, yerel çalıştırıyorsanız Python / Node versiyonları) ile bir issue açın.
- Özellik önerisi — PR yazmadan önce
proposaletiketli bir issue açıp kullanım senaryosunu ve kaba API şeklini anlatın; yön konusunda hizalanalım. - Fix veya özellik gönderimi — repoyu fork edin,
main'den dal açın,main'e karşı pull request açın. - Dokümantasyon iyileştirmesi — yazım hataları, açıklamaların netleştirilmesi, eksik örnekler — hepsi memnuniyetle karşılanır. README'ler ve
docs/hem İngilizce hem Türkçe; yapısal eşlik zorunlu (aynı başlıklar, aynı sıra, aynı linkler).
Geliştirme ortamı
git clone https://github.com/<kullanici-adin>/Septum.git
cd Septum
./dev.sh --setup # tüm Python paketleri + frontend bağımlılıklarını kurar
./dev.sh # api + web'i port 3000'de başlatırGereksinimler:
- Python 3.11+ (3.13'e kadar test edilmiş)
- Node.js 20+
- ffmpeg (Whisper ses ingest'i için)
İlk ziyarette kurulum sihirbazı açılır. Manuel .env düzenlemesi yok.
Testleri çalıştırma
# Backend (tüm modüller)
pytest packages/*/tests -q
# Tek modül
pytest packages/core/tests/ -q
pytest packages/api/tests/test_sanitizer.py -v
# Frontend
cd packages/web && npm testTestlerdeki tüm LLM çağrıları mock edilmelidir — gerçek bulut istekleri CI tarafından reddedilir.
Kod stili
- Python:
ruff check+ruff formatgeçmeli. Public API'lerde type hint zorunlu. - TypeScript:
npm run lint+tsc --noEmitgeçmeli. - Sınıf/fonksiyon/değişken isimlerinde ülke veya dil adı yok (bkz.
CLAUDE.md§ Zero-Tolerance Generic Architecture). İstisnalar:national_ids/algoritmik doğrulayıcılar, mapping tablolarında ISO 639-1 kodları, HuggingFace model ID'leri, regülasyon seed açıklamaları, test dosyaları. - Satır içi LLM prompt yok. Tüm prompt'lar
packages/api/septum_api/services/prompts.pyiçindekiPromptCatalogüzerinden geçer. - Her şey async. Tüm DB, dosya I/O ve LLM çağrıları async'tir.
Commit mesajları
Emir kipinde, İngilizce, modül scope'lu conventional prefix:
<type>(<scope>): <açıklama>
type: feat, fix, refactor, test, docs, chore
scope: core, mcp, api, web, queue, gateway, auditÖrnekler:
feat(core): add Australia Privacy Act recognizer packfix(api): respect rag_relevance_threshold for empty corpusdocs(readme): add Docker Compose deployment note
Pull request süreci
- Fork +
main'den dal açın. - Değişiklik için test yazın (ya da neden teste gerek olmadığını açıklayın).
- PR'ları odaklı tutun — bir mantıksal değişiklik, bir PR. İlgisiz başka sorunlar yakaladıysanız ikinci PR açın.
CHANGELOG.md'yi yalnızca PR bir sonraki sürümle ship olacaksa güncelleyin — aksi halde dokunmayın../dev.sh --setup && pytest packages/*/tests -qlokalde geçiyor olmalı.- PR'ı
main'e karşı açın. CI backend testlerini (Python 3.13), modüler testleri, ruff, bandit, pip-audit, frontend jest, tsc, npm audit'i çalıştırır. Hepsi geçmeli.
Regülasyon entity kaynakları
Yerleşik bir regülasyonun entity type'larını değiştiriyorsanız (seed ya da herhangi bir recognizer paketinde), packages/core/docs/REGULATION_ENTITY_SOURCES.md dosyasını aynı PR'da hukuki kaynak (madde/fıkra/resital) ile güncelleyin. CHANGELOG pre-commit hook'u bu eşleşmeyi zorlar.
Güvenlik
Güvenlik issue'larını lütfen açık şekilde yazmayın. GitHub profilinde listelenen adresten bakımcıya e-posta atın; düzeltme ve duyuruyu birlikte planlarız.
Lisans
Katkılar projenin kendisiyle aynı MIT lisansı altındadır. Bir pull request açarak katkınızın bu koşullarda dağıtılabileceğini kabul etmiş olursunuz.