# HR — AI ve geliştirici proje rehberi

**Konum**: `/home/lexicollect/public_html/hr`  
**Amaç**: Personel, departman, rol, izin (leave), devamsızlık (attendance) ve yönetici onay akışları. Laravel Breeze ile kimlik doğrulama; **Google 2FA** (`pragmarx/google2fa-laravel`, `bacon/bacon-qr-code`); PDF için `barryvdh/laravel-dompdf`.

## Teknoloji özeti

| Bileşen | Not |
|---------|-----|
| PHP | ^8.2 |
| Framework | Laravel ^12 |
| Ön yüz | Blade, Tailwind/Vite (proje `package.json` ile) |
| Kimlik | Breeze + e-posta doğrulama + `2fa` middleware |
| Roller | `admin`, `manager`, `employee` — `CheckRole` middleware (`role:admin` vb.) |

## Çalışma prensibi

1. **Giriş**: `/` → `login` yönlendirmesi (`routes/web.php`).
2. **2FA**: `auth` sonrası `TwoFactorController` rotaları; dashboard ve yönetim için `middleware`: `auth`, `verified`, `2fa`.
3. **Rol yönlendirmesi**: `/dashboard` kullanıcı rolüne göre `admin.dashboard`, `manager.dashboard` veya `employee.dashboard` adreslerine yönlendirir.
4. **Admin** (`prefix admin`): kullanıcılar, çalışanlar, roller, departmanlar, devamsızlık, izin onayı/reddi, toplu geçici şifre üretimi vb.
5. **Manager** (`prefix manager`): ekip, izin onayları.
6. **Employee** (`prefix employee`): izin sihirbazı, kendi devamsızlık görüntüleme, profil.

### Önemli dosyalar

- Rotalar: `routes/web.php`, `routes/auth.php`
- Middleware kayıtları: `bootstrap/app.php` (`role`, `2fa` alias)
- Denetleyiciler: `app/Http/Controllers/Admin|Manager|Employee|Auth/`
- Modeller: `app/Models/`
- Proje kuralları (Cursor): `.cursorrules` — stack sürüm notları eski olabilir; **gerçek sürüm için `composer.json` esas alınmalı**.

## Dosya / dizin yapısı (özet)

```
hr/
├── app/
│   ├── Http/Controllers/   # Admin, Manager, Employee, Auth, TwoFactor
│   ├── Http/Middleware/
│   ├── Http/Requests/
│   ├── Models/
│   ├── Services/
│   └── …                    # Aşağıdaki “Teknik borç” bölümüne bakın
├── bootstrap/
├── config/
├── database/                # migrations, seeders
├── public/                  # web sunucu kökü (deployment’a göre)
├── resources/views/
├── routes/
├── composer.json            # nwidart YOK — ana HR uygulaması buradan yüklenir
├── package.json, vite.config.js
└── .cursorrules
```

## Teknik borç ve yapı uyarısı (kritik)

`hr/app/` altında Laravel uygulama kodu (`Http`, `Models`, …) **ile birlikte** ikinci bir projeye benzeyen öğeler bulunabilir: örneğin `artisan`, `composer.json`, `Modules/`, `config/modules.php`, `node_modules` (iç içe kurulum).

- **Kök `hr/composer.json`**: `nwidart/laravel-modules` tanımlı değil; `Modules` namespace birleşik şekilde yüklenmeyebilir.
- **Yapılacak iş HR ekranları ise** değişiklikleri **`hr/app/Http/...` ve kök `hr/routes/`** üzerinden planlayın; iç içe `hr/app/artisan` ile karıştırmayın.
- İdeal durum: iç içe kopya proje dosyaları ayrı bir dizine taşınır veya silinir; bu doküman sadece mevcut durumu kayıt altına alır.

## Eksik / iyileştirme notları

- Kök `README.md` hâlâ varsayılan Laravel metnidir; operasyonel HR açıklaması yok (isteğe bağlı doldurulabilir).
- `.cursorrules` içinde Laravel 10/11 ve PHP 8.1 ifadeleri geçebilir; gerçek gereksinim `composer.json` ile uyumlu (**Laravel 12, PHP 8.2**).
- `demo-qr` rotası test amaçlı; production’da kısıtlanması değerlendirilebilir.

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

- HR’de **modül paketi yok**; özellik eklerken klasik Laravel controller + view + migration yolu kullanın.
- Rol kontrolü mutlaka middleware ile; yeni rota eklerken `role:` ve `2fa` zincirini kopyalayın.
- Personel verisi içeren işlemlerde form request ve policy seviyesinde yetkiyi gözden geçirin.
