# Şablonla kaydet

`POST /api/v1/forms/{kind}`

Tek istekte fırsat ya da destek talebi + açık bloklar. **Fırsat:** firma (yoksa aday olarak açılır; benzer ad → `409 similar`, mevcut kaydı seçin ya da `confirm_new: true`), ad, tür, sorumlu, değer, kapanış; bloklar ürün ve miktar, teklif (teklif geçmişine yazılır), öngörü, kaynak, karar vericiler (`contact_ids`), deneme, ilk görevler (`tasks`), ek bilgiler (`cf`), özel nesne bağları (`co`). Şablonda aşama kuralı yoksa şablonun başlangıç aşaması kullanılır. **Talep:** firma kayıtlı olmayabilir (firma adıyla açılır), kişi (`contact_id` ya da `contact_name` + `email` + `phone`), konu, açıklama, tip (`kind`, boşsa şablonun tipi), öncelik (standart çözüm süresi; şablonun önceliğiyle aynıysa şablonun süresi), görevli (`assigned_to` yoksa şablonun atama kuralı: ekipte en az açık talebi olan, firma sorumlusu, açan kişi ya da belirli kullanıcı), kategori; bloklar ürün / lot, sipariş, proje, kanal, saha ziyareti (görevliye görev), ek bilgiler. `blocks` gönderilmezse şablonun açık blokları ve varsayılanları uygulanır. Zorunlu blok boşsa `400 invalid`.

## Yol parametreleri

| Alan | Tür | Açıklama |
|---|---|---|
| `kind` (zorunlu) | string | Form. Değerler: `opp`, `ticket` |

## Gövde

| Alan | Tür | Açıklama |
|---|---|---|
| `template_id` | integer | Şablon (`/forms/{kind}/config` → `templates[].id`); boşsa kullanıcının varsayılanı. |
| `customer_id / customer` | integer / string | Firma kimliği ya da adı (fırsatta biri zorunlu). |
| `blocks` | array<string> | Açık bloklar (ör. `urun`, `teklif`, `gorev`, `co:uretim_hatti`); alanları gövdede `blocks[].fields[].k` anahtarlarıyla (`product`, `potential_kg`, `offer_price` …). |
| `name / type / user_id / value / currency / close_date` | string | Fırsat çekirdeği: ad, tür, sorumlu, yıllık değer, para birimi, kapanış (YYYY-MM-DD). |
| `subject / detail / kind / priority / category / assigned_to` | string | Talep çekirdeği: konu (talepte zorunlu), açıklama, tip, öncelik (`Düşük`, `Normal`, `Yüksek`, `Acil`), kategori, görevli. |
| `contact_ids` | array<integer> | Fırsatın karar vericileri (firmanın kişileri). |
| `tasks` | array | İlk görevler: `"Numune gönder \| 5 \| Görev"` (başlık \| gün \| tür) ya da `{title, days, kind}`. |
| `cf` | object | Ek bilgiler: `{alan anahtarı: değer}` (Ayarlar › Özel alanlar). |
| `co` | object | Özel nesne bağları: `{nesne anahtarı: kayıt kimliği}`. |
| `confirm_new` | boolean | Benzer adlı firma olsa da yeni aç. |

## Yanıt

```json 200
{
  "customer_created": false,
  "message": "Fırsat açıldı: #55 Hat 3 şişirme projesi · Alize Paketleme San. ve Tic. A.Ş.",
  "ok": true,
  "opp": {
    "bant": 0,
    "base_currency": "EUR",
    "close_date": "2027-01-04",
    "cur_sym": "€",
    "currency": "EUR",
    "customer": "Alize Paketleme San. ve Tic. A.Ş.",
    "customer_city": "İstanbul",
    "customer_id": 1,
    "days_in_stage": 0,
    "detail_status": "",
    "fc": "Pipeline",
    "health": {
      "grade": "success",
      "label": "sağlıklı",
      "score": 100
    },
    "health_color": "g",
    "health_manual": false,
    "health_note": "",
    "id": 55,
    "initials": "AP",
    "is_account": false,
    "is_open": true,
    "last_update": "2026-10-06",
    "lifetime_left": 180,
    "line": "",
    "name": "Hat 3 şişirme projesi",
    "next_step": "Karar verici / yetkili kişiyi belirle (Authority)",
    "offer_price": 1.85,
    "owner": {
      "full_name": "Deniz Aksoy",
      "id": 1,
      "role": "admin",
      "role_label": "Yönetici",
      "username": "admin"
    },
    "payment_days": 60,
    "potential_kg": 15000.0,
    "prob": 0.1,
    "probability": null,
    "product": "PU-SL 200 Solventsiz Laminasyon Yapıştırıcısı",
    "product_id": 1,
    "pu": "€/kg",
    "rid": "006ib7dvC23Bvtw",
    "sla_days": 30,
    "sla_left": 30,
    "source": "Bayi / distribütör",
    "stage": "Qualify",
    "stage_label": "Qualify",
    "start_date": "2026-10-06",
    "trend": "",
    "trend_label": "Otomatik",
    "type": "Yeni Müşteri",
    "unit": "kg",
    "unit_code": "kg",
    "value": 333000.0,
    "value_base": 333000.0,
    "value_short": "333K"
  },
  "parts": [
    "fırsat #55",
    "teklif kaydı"
  ],
  "tasks": 2,
  "template_id": 1
}
```
