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
+36
View File
@@ -0,0 +1,36 @@
# Main
**Özet:** Uygulamanın giriş noktası (`main.go:38`). Fiber v3 web framework'ünü başlatır, `DB_MODE`'a göre PostgreSQL veya SQLite bağlantısını kurar, AutoMigrate çalıştırır ve tüm route'ları tanımlar.
**Kütüphaneler:** Fiber v3, GORM, PostgreSQL, SQLite, godotenv
**Bağlantılar:** [[Index]], [[Config]], [[RequestLog]], [[OpenAIHandler]], [[AnthropicHandler]], [[HealthHandler]], [[SwaggerUI]], [[DockerSetup]]
## Başlangıç Adımları
1. `.env` dosyası yüklenir (`godotenv.Load()`)
2. [[Config]] okunur (`config.Load()`)
3. `DB_MODE` kontrol edilir — PostgreSQL DSN veya SQLite bağlantısı + AutoMigrate (`RequestLog`)
4. Fiber v3 app oluşturulur (`fiber.Config{AppName: "LLM Gateway v1.0", ServerHeader: "optoant-gateway"}`)
5. Route'lar tanımlanır:
- `GET /health` → [[HealthHandler]]
- `GET /swagger/swagger.json` → statik dosya serve
- `GET /swagger``/swagger/` redirect
- `GET /swagger/*` → Swagger UI HTML (CDN)
- `ALL /v1/*` → [[OpenAIHandler]] (direct passthrough)
- `ALL /anthropic`, `/anthropic/*` → [[AnthropicHandler]] (Bifrost dönüşümü)
6. `app.Listen(addr)` ile server başlatılır
## Önemli Detaylar
- DB bağlantısı başarısız olursa uygulama **devam eder** (DB'siz çalışabilir)
- Tüm backend istekleri `.env`'deki `OPENAI_BACKEND` adresine gider
- OpenAI endpoint'i direkt passthrough yaparken, Anthropic endpoint'i format dönüşümü yapar
- Swagger UI **CDN'den** yüklenir (offline çalışmaz)
- API key auto-injection: `OPENAI_KEY` env'i tanımlıysa, client Authorization göndermezse otomatik eklenir
## Geliştirme
- **Air hot-reload:** `.air.toml` ile canlı yeniden derleme (`air`)
- **Production build:** `build.sh` ile `CGO_ENABLED=0` optimize binary
- **Docker:** `docker/Dockerfile` multi-stage + `docker-compose.yml`