# Platform — ForgeOS Shared Layer

ForgeOS platform katmanı. Tüm modüllerin paylaştığı altyapıyı barındırır: multi-module dashboard, shared models (os_companies, os_persons).

## Mevcut Durum

Platform şu an minimal bir katmandır. Tek bir route'u (dashboard) ve iki shared model'i var. Controller'lar henüz yok — CRUD işlemleri FinanceForge modülü üzerinden yapılıyor.

## Request Flow

```
root index.php → /platform/* prefix → platform/bootstrap.php
  → marketforge/config/app.php (shared DB, BaseModel, Auth, Router)
  → Auth middleware (SessionHelper)
  → Router → views/dashboard.php
```

Platform kendi config'ine sahip değildir — MarketForge'un config'ini (`marketforge/config/app.php`) kullanır.

## Dosya Yapısı

```
platform/
├── CLAUDE.md            ← Bu dosya
├── bootstrap.php        ← 1 route: GET / → dashboard.php
├── models/
│   ├── OsCompany.php    ← os_companies CRUD (getAll, find, create, update, findByTaxId, findByRegNo, count)
│   └── OsPerson.php     ← os_persons CRUD (getAll, find, create, update, findByTaxId, count)
├── controllers/         ← Boş — CRUD FinanceForge controller'larında
└── views/
    ├── dashboard.php    ← Multi-module landing page
    ├── companies/       ← Boş — FinanceForge kullanıyor
    └── persons/         ← Boş — FinanceForge kullanıyor
```

## Route

| Method | Path | View |
|--------|------|------|
| GET | `/platform/` | `views/dashboard.php` |

## Dashboard İçeriği

Multi-module landing sayfası. Her modül için kart gösterir:
- **MarketForge**: Keyword, makale, yayınlanan yazı, aktif agent, LLM token ve maliyet istatistikleri
- **FinanceForge**: Şirket ve kişi sayıları
- **DataForge / PageCraft**: "Coming soon" kartları

Veriler doğrudan DB sorgularıyla çekilir (`mf_projects`, `blog_keywords`, `blog_posts`, `blog_agent_runs`, `os_companies`, `os_persons`).

## Shared Models

Platform model'leri `platform/models/` altında yaşar. FinanceForge bu model'leri kendi autoloader'ı üzerinden kullanır:
```php
// financeforge/config/app.php
'OsCompany' => dirname(__DIR__, 2) . '/platform/models/OsCompany.php',
'OsPerson'  => dirname(__DIR__, 2) . '/platform/models/OsPerson.php',
```

### os_companies Tablosu
Tüm şirket tanımları. Alanlar: id (UUID), short_name, official_name, tax_id (VKN), reg_no, country (Türkiye/Estonya), city, address, parent_company_id (self-reference), tenant_id, deleted_at.

### os_persons Tablosu
Tüm kişi tanımları. Alanlar: id (UUID), full_name, tax_id (TCKN), email, phone, tenant_id, deleted_at.

## Modüller Bu Katmanı Nasıl Kullanmalı

1. Platform model'lerini (`OsCompany`, `OsPerson`) modül autoloader'ına ekle
2. `marketforge/config/app.php`'den DB, Auth, Router shared altyapısını inherit et
3. Yeni platform-level tablo ekliyorsan `os_` prefix kullan
4. `tenant_id` ve `deleted_at` zorunlu (bkz. root CLAUDE.md mandatory rules)

## Planlanan (Faz 2)

- Şirket / personel / takım yönetimi doğrudan platform üzerinden
- Platform controller'ları (`CompanyController`, `PersonController`, `TeamController`)
- ForgeOS auth sistemi (mevcut MarketForge auth'tan bağımsız)
