> ## Documentation Index
> Fetch the complete documentation index at: https://docs.azalt.co/llms.txt
> Use this file to discover all available pages before exploring further.

# Site

> Hiyerarşi, şema, erişim ve işlemler

## Genel Bakış

Site'lar, bir organizasyon içindeki hiyerarşik lokasyonlardır. Kök site (`site-root-*`) altında bir ağaç yapısı oluştururlar. Tüm site işlemleri org ve site erişim kapsamı ile sınırlıdır.

## Şema (çıktı)

API'lerin döndürdüğü temel alanlar:

```ts theme={null}
{
  id: string,
  name: string,
  createdAt: Date,
  updatedAt: Date,
  parentSiteId: string | null,
  country: string | null,
  city: string | null,
  address: string | null,
  unLocode: string | null,
  longitude: string | null,
  latitude: string | null,
  numberOfEmployees: number | null,
  floorAreaInM2: number | null,
  tags: string[] | null,
  metadata: Record<string, string> | null,
}
```

Not: `longitude` ve `latitude` alanları yanıtlarda string'tir.

## Hiyerarşi & Erişim

* Kök site organizasyon başına oluşturulur; silinemez.
* Kullanıcının etkin erişimi = atanan site(ler) + tüm alt site(ler) (`OrganizationUserSite`).
* Listeleme (`sites.list`), yalnızca erişebildiğiniz site'ları döndürür (isteğe bağlı olarak kök, "Organization" olarak gösterilir).

## İşlemler

* Site listeleme: `sites.list({ includeRoot?: boolean })`
* Site oluşturma: `sites.create({ name, organizationId, parentSiteId?, ... })`
* Site güncelleme: `sites.update({ id, name, ... })`
* Site silme: `sites.delete({ id, cascade?: boolean })` (soft‑delete; `cascade` alt site'ler için)
* CSV içe aktarma: `sites.import({ organizationId, csvContent })` (doğrulamalı toplu oluşturma)

Tüm işlemler RBAC + ABAC (rol + site erişimi) kontrolleri uygular ve RLS kullanır.

## CSV İçe Aktarım

Desteklenen sütunlar (başlık örnekleri):

* `id?`, `name` (zorunlu)
* `parentSiteId?` (DB'de veya aynı CSV içindeyse)
* `country?`, `city?`, `address?`, `unLocode?`
* `longitude?`, `latitude?`
* `numberOfEmployees?`, `floorAreaInM2?`
* `tags?` (virgül veya `|` ile ayrılmış)
* `metadata_*` (örn. `metadata_sapId` → `{ sapId: "..." }`)

Davranış:

* Satırları doğrular ve topolojik sıralar (ebeveynler çocuklardan önce); döngüleri saptar.
* Bağımlılık seviyelerine göre toplu ekleme yapar.
* Başarı/başarısız sayıları ve ayrıntılı hataları (satır numarası ile) döndürür.

## En İyi Uygulamalar

* Hiyerarşiyi mümkün olduğunca sığ tutun; manager'ları bölge düğümlerine, collector'ları yaprak düğümlere atayın.
* Yoğunluk hesaplamaları için `numberOfEmployees` ve `floorAreaInM2` alanlarını doldurun.
* Dış sistem kimlikleri ve filtreleme için `tags` ve `metadata_*` kullanın.
* `cascade` silmeyi yalnız emin olduğunuz durumlarda tercih edin.

## Dikkat Edilecekler

* Kök site silinemez.
* Koordinatlar string'tir; matematik için sayıya dönüştürün.
* Site silme işlemi soft‑delete'tir (`deletedAt`).

## Bkz.

* Organization (ayarlar, üyelik)
* Organization User (roller)
* Organization User Site (site atamaları ve etkin erişim)
