# API (Node) — AI ve geliştirici proje rehberi

**Konum**: `/home/lexicollect/public_html/api`  
**Paket adı**: `lexicollect-api` (`package.json`)  
**Amaç**: Hukuk firması kayıtlarını API anahtarı ile doğrulama; tarayıcı cookie’lerini merkezi oturum olarak saklama/güncelleme ve sorgulama.

## Teknoloji özeti

| Bileşen | Not |
|---------|-----|
| Runtime | Node.js |
| Çatı | Express 4 |
| DB | MySQL (`mysql2` pool — `config/db.js`) |
| Güvenlik | `helmet`, `cors`, `body-parser` |
| Log | `morgan` (dev) |
| Süreç | `ecosystem.config.js` (PM2), scriptler `package.json` içinde |

## Çalışma prensibi

1. `app.js` Express uygulamasını oluşturur; **`/api` altındaki tüm rotalar** önce `validateApiKey` middleware’inden geçer.
2. Middleware (`middleware/auth.js`): Header’dan API anahtarını okur, `login_law_firms` tablosunda doğrular (`is_active`, tarih aralığı, `deleted_at`), başarılıysa `req.lawFirm` doldurulur.
3. İş mantığı: `routes/api.js` + `models/lawFirm.js` (oturum oluşturma/güncelleme, cookie JSON olarak saklama).

### Gerçek HTTP başlığı (README ile uyumsuzluk)

| Kaynak | Başlık adı |
|--------|------------|
| **Kod** (`middleware/auth.js`) | `x-fe-key` |
| `README.md` | `x-api-key` yazıyor — **kod esas alınmalı**; dokümantasyon veya istemciler güncellenmeli |

### Gerçek endpoint’ler (`routes/api.js`)

| Yöntem | Yol | Açıklama |
|--------|-----|----------|
| POST | `/api/validate-key` | Anahtar doğrulandı; firma bilgisi + `expiryDate`, `isValid` |
| POST | `/api/share-session` | Body’de `cookies` (obje) zorunlu; oturum UUID ile oluşturulur veya güncellenir |
| POST | `/api/look` | Firmaya ait son oturum + cookie verisi |

**README.md** içinde geçen `/api/look-session` adı kodda yok; gerçek rota **`/api/look`**.

Varsayılan port: `app.js` içinde `process.env.PORT || 3003` (README’de örnek `PORT=0001` — ortam dosyasına göre değişir).

## Dosya yapısı

```
api/
├── app.js                 # Giriş noktası
├── ecosystem.config.js    # PM2
├── config/db.js           # MySQL pool
├── middleware/auth.js     # API anahtarı
├── models/lawFirm.js      # Firma + oturum DB işlemleri
├── routes/api.js          # /api/* router
├── package.json
├── README.md              # Güncellenmesi gereken: header + look-session → look
└── logs/                  # Ortama göre
```

## Veritabanı (README özeti)

- `login_law_firms` — firma + `api_key`, tarih, aktiflik
- `login_law_firm_users` — firmaya bağlı kullanıcılar
- `login_law_firm_sessions` — oturum ve cookie verisi

Kolon isimleri için `models/lawFirm.js` ve migration (varsa başka repoda) kontrol edilmeli.

## Eksikler ve öneriler

1. **README ve kod senkronu**: `x-fe-key`, `/api/look`, `share-session` body şartları.
2. **JWT**: `package.json`’da `jsonwebtoken` yok; README’de geçen JWT örneği eski tasarım olabilir — mevcut akış API key + session üzerinden.
3. **Hata mesajları**: Üretimde stack trace log’a, istemciye genel mesaj (mevcut `app.js` error handler uygun).

## AI asistanları için kısa talimatlar

- Bu projede **PHP/Laravel yok**; yalnızca Node/Express düzenlenir.
- Yeni endpoint eklerken `app.js` içinde `/api` grubuna eklenen router’da middleware sırasını koruyun.
- İstemci entegrasyonu yazarken mutlaka **`x-fe-key`** kullanıldığını doğrulayın.
