first commit

This commit is contained in:
Beyhan Ogur
2026-05-11 15:08:50 +03:00
commit a408821410
47 changed files with 4670 additions and 0 deletions
+33
View File
@@ -0,0 +1,33 @@
# RequestLog
**Özet:** Her proxy'lenen isteğin kaydını tutan GORM modeli (`models/request_log.go:13`). Hassas header'lar (Authorization) asla düz metin olarak saklanmaz. Loglama fire-and-forget goroutine ile yapılır.
**Kütüphaneler:** GORM, PostgreSQL, Go `time`
**Bağlantılar:** [[Main]], [[OpenAIHandler]], [[AnthropicHandler]], [[Index]]
## Tablo: `request_logs`
| Column | GORM Tipi | JSON | Açıklama |
|--------|-----------|------|----------|
| `id` | `uint` (PK) | `id` | Otomatik artan |
| `created_at` | `time.Time` | `created_at` | Oluşturulma zamanı |
| `updated_at` | `time.Time` | `updated_at` | Güncellenme zamanı |
| `deleted_at` | `gorm.DeletedAt` | (gizli) | Soft delete index |
| `endpoint` | `string(512)` | `endpoint` | İstek yolu |
| `method` | `string(16)` | `method` | HTTP metodu |
| `client_ip` | `string(64)` | `client_ip` | İstemci IP |
| `request_body` | `text` | `request_body` | Body (2000 char limit) |
| `response_status` | `int` | `response_status` | HTTP yanıt kodu |
| `latency_ms` | `int64` | `latency_ms` | İşlem süresi (ms) |
## Sabitler
- `maxBodyLength = 2000``TruncateBody()` ile body bu limite kırpılır
## Önemli Detaylar
- `TruncateBody()` body'yi 2000 karakterde kırpar, sonuna `…[truncated]` ekler
- Loglama **fire-and-forget** (`go db.Create()`): loglama hatası ana isteği etkilemez
- Hassas header'lar (Authorization, X-Api-Key) veritabanına yazılmaz
- DB bağlantısı yoksa loglama tamamen atlanır