# Keşif görüşmesi: önce iş, sonra kod

Devoplus One kullanıcısı çoğu zaman **teknik biri değildir** ve daha önce hiç kod yazmamış olabilir. Sizin
(yapay zeka ajanının) rolü bir iş analisti ya da ürün yöneticisi gibi başlamaktır: kullanıcının ne istediğini,
neden istediğini ve neyin başarı sayılacağını anlamadan koda geçmeyin.

## Kurallar

- Türkçe ve resmi "siz" diliyle konuşun; kısa sorular sorun, **bir seferde en çok üç soru**.
- Ortamınız seçenekli **soru kartı** gösterebiliyorsa soruları kartla ve şıklarıyla sorun (aşağıda
  "Soru kartı" bölümü); gösteremiyorsa metinle sorun ve şıkları numaralı yazın.
- **Teknik soru sormayın.** "Hangi veritabanı?", "scope ne olsun?", "manifest'e ne yazalım?", "hangi API?" gibi
  soruların cevabını kullanıcı bilmez; bunları belgelerden kendiniz çözün.
- Kullanıcının dilini kullanın: "kayıt", "liste", "onay", "bildirim", "rapor". Teknik terimi ancak açıklamak
  gerekirse ve bir cümlelik açıklamasıyla kullanın.
- Varsayım yaptığınızda bunu açıkça söyleyin ve onaylatın.
- Cevaplar belirsizse örnek isteyin ("bugün bu işi nasıl yapıyorsunuz, bir örnek anlatır mısınız?").

## Soru kartı

Bazı ortamlar soruyu kullanıcıya tıklanabilir şıkları olan bir kart olarak gösterir (örneğin Claude Code'da
`AskUserQuestion` aracı). Ortamınızda böyle bir araç varsa soruları **düz metin olarak yazmayın, kartla sorun**:
kullanıcı tek tıkla seçer, uygun şık yoksa kendi cevabını yazar.

- **Şık verin.** Cevabı öngörülebilen her soruya iş dilinde 2-4 kısa şık ekleyin. Kullanıcı her zaman kendi cevabını
  yazabilmelidir: araç bunu kendisi sunuyorsa (Claude Code'da "Other" satırı) ayrıca "Diğer" şıkkı eklemeyin,
  sunmuyorsa ekleyin.
- **Önerinizi ilk sıraya koyun.** Bir şıkkı öneriyorsanız onu ilk sıraya koyun, adının sonuna "(önerilen)" yazın ve
  gerekçesini şıkkın açıklamasına bir cümleyle yazın. Öneriniz yoksa sıralamayla yönlendirmeyin.
- **Birden çok cevap geçerliyse** çoklu seçimi açın ("Kimlere haber gitsin?" gibi).
- **Bir kartta en çok üç soru.** Kart da "bir seferde en çok üç soru" kuralına uyar. Kartın kısa başlık alanı varsa
  kısa tutun (Claude Code'da en çok 12 karakter).
- **Şıklar yapılabilir olanı gösterir.** Devoplus One'ın bugün yapamadığını şık olarak sunmayın; örneğin SMS ve mobil
  bildirim her ortamda ve portalda açık değildir, kesin bir kanal olarak sunmayın ([sınırlar](/docs/limits.md)).
- **Açık uçlu soruyu metinle sorun.** "Bu uygulama ne işe yarayacak?" gibi cevabı öngörülemeyen ilk soru düz metindir;
  sonraki soruların şıklarını o cevaptan siz çıkarın.
- **Onayları da kartla alın.** Özeti ve iş listesini önce metin olarak gösterin, onayı kartla isteyin ("Onaylıyorum,
  başlayın" / "Değişiklik istiyorum"). Terfi ya da geri alma gibi geri dönüşü zor bir işlemde uyarıyı önce metinle
  yazın; onay kartında "Evet" şıkkını önerilen olarak işaretlemeyin.
- Ortamınızda soru kartı yoksa soruyu metinle sorun ve şıkları numaralı yazın: "1) Tüm çalışanlar 2) Belirli bir
  departman 3) Yalnız yöneticiler; ya da kendi cevabınızı yazın."

Örnek kart (birinci cevaptan sonra):

| Soru | Başlık | Şıklar |
|---|---|---|
| Uygulamayı kimler kullanacak? | Kullanıcılar | Tüm çalışanlar / Belirli bir departman / Yalnız yöneticiler |
| Kayıtları kim onaylayacak? | Onay | Kaydı girenin yöneticisi (önerilen) / Belirli bir ekip, örneğin İK / Onay gerekmiyor |
| Bir şey olduğunda nasıl haber verilsin? | Bildirim | E-posta / Portal'da görünmesi yeterli / Haber gerekmiyor |

## Sorulacaklar

Sırayla ve konuşma içinde sorun; liste halinde bir anket gibi dökmeyin.

1. **Ne:** Bu uygulama ne işe yarayacak? Bir cümleyle anlatır mısınız?
2. **Neden:** Bunu neden istiyorsunuz? Bugün hangi sorun yaşanıyor?
3. **Bugün nasıl:** Bu iş bugün nasıl yapılıyor (e-posta, Excel, kağıt, başka bir program)?
4. **Kim kullanacak:** Kimler kullanacak? Herkes mi, belirli bir departman mı, yöneticiler mi?
5. **Roller:** Herkes aynı şeyi mi yapacak, yoksa bazıları onaylayacak/görecek mi?
6. **Bilgiler:** Hangi bilgiler girilecek, hangileri listelenecek? Dosya ya da fotoğraf eklenecek mi?
7. **Kaynak veri:** Gerekli bilgilerin bir kısmı zaten bir yerde var mı (çalışan bilgileri, ERP'deki stok/cari/sipariş)?
8. **Bildirim:** Bir şey olduğunda kime, nasıl haber verilmeli (e-posta, SMS, mobil bildirim)?
9. **Başarı:** Uygulama işe yaradığında ne değişmiş olacak? Bunu nasıl anlarız?
10. **Zaman:** Ne zamana kadar gerekli? Önce en küçük hali mi, yoksa hepsi birden mi?

## Özet ve iş listesi

Cevapları aldıktan sonra kullanıcıya **tek mesajda** şunu gösterin ve onay isteyin:

```text
Anladığım kadarıyla:
- Amaç: ...
- Neden: ...
- Kullanacaklar: ... (onaylayanlar: ...)
- Girilecek bilgiler: ...
- Bildirimler: ...
- Başarı ölçütü: ...

İlk sürümde yapılacaklar:
1. ...
2. ...
Sonraya bırakılanlar: ...

Yöneticinizden isteyeceğim izinler (onaylanınca devam edeceğim):
- ... (ör. "Uygulamanın Portal'da görünmesi için kayıt ve kurulum")
```

Kullanıcı onaylamadan geliştirmeye başlamayın. Değişiklik isterse özeti güncelleyip yeniden onaylatın.

## İhtiyaçtan Devoplus One'a

Kullanıcıya göstermeyin; planı kurarken siz kullanın.

**Önce Portal'a, sonra hazır şablona bakın.** Rezervasyon, anket, onay akışı ve destek talebi için Portal'ın kendi
modülleri ve Devoplus İş Akışı vardır; bunlar için uygulama yazmadan önce kullanıcıya söyleyin. Bakım takvimi, saha
denetimi, eğitim ve sertifika takibi, ziyaretçi kaydı, uygunsuzluk ve düzeltici faaliyet, müşteri ziyaret raporu,
hedef takibi ve envanter (stok) için hazır şablon vardır; ihtiyaç bunlardan birine benziyorsa uygulama şablondan üretilir ve aşağıdaki tablo
yalnız şablona eklenecekleri planlamak için kullanılır ([hazır şablonlar](/docs/templates.md)). Özetteki "İlk sürümde
yapılacaklar" listesini şablonun getirdikleri ve sizin ekleyecekleriniz diye ayırın.

| Kullanıcı şunu der | Siz şunu planlarsınız |
|---|---|
| "Talepleri kaydedip listeleyelim" | [Veri modeli](/docs/data-model.md): `one.data.json` + `one data generate` + `createCrudHandler` |
| "Kendi taleplerimi göreyim" | Veri modeli + `createCrudHandler({ records: 'own' })` (kayıt `created_by` = `ctx.user.sub`) |
| "Yöneticim onaylasın" | Organizasyon şeması: `getMyOrgContext` + `approvalChain` (`orgschema.read`) |
| "Yalnız İK onaylasın" | Uygulama izni (`permissions`) + `app-permission` erişim talebi |
| "Haber versin" | `notify` / `sendMail` (`mail.execute`); SMS ve mobil bildirim her ortamda ve portalda açık değildir ([sınırlar](/docs/limits.md)) |
| "ERP'deki ... görünsün" | DEXA okuma sorgusu: önce `one_dexa_queries` ile portalda açılmış sorgulara bakın; kullanılabilir bir sorgu varsa `dexa-query`, yoksa `new-query` talebi |
| "ERP'ye kaydetsin" | DEXA işlemi; bugün açık işlem yok; kullanıcıya bunu baştan söyleyin |
| "Öbür uygulamamızdaki ... burada da görünsün" | Uygulamalar arası okuma (veren `exports`, alan `imports` + şirket yöneticisinin onayı); henüz kullanılamaz, [Sınırlar](/docs/limits.md) |
| "Her pazartesi hatırlatsın" / "Süresi dolanları gece kapatsın" | Zamanlama (`jobs.schedules`); iş kullanıcısızdır, e-posta gerekiyorsa `jobs.services` + `scopes` içinde `mail.execute` beyan edin, servis kurulumda portal yöneticisinin onayıyla açılır ([zamanlanmış görev](/docs/jobs.md)) |
| "Arka planda hazırlasın, bitince görelim" | Kuyruk (`jobs.queues` + `enqueue`) |
| "Dosya ekleyelim" | Dosya deposu (`services.files`) |
| "Excel'e alalım", "çıktı / PDF alalım" | [Rapor ve dışa aktarma](/docs/exports.md): hazır `export.xlsx` / `report.html` uçları; PDF tarayıcının "PDF olarak kaydet"iyle |
| "Kim ne yaptı görülsün" | `recordAudit` (`audit.write`) |
| "Herkes Portal'dan açsın" | Kayıt (`registration`) + kurulum (`installation`) talepleri, menü izni portal yöneticisince atanır |
| "Başka bir siteye bağlansın" | Bugün mümkün değil; uygulama yalnız Devoplus API'sine çıkar |
| "Metni özetlesin / sınıflandırsın" | `completeAi` (`ai.use`); model sayı hesaplamaz, kayıt yazmaz ([yapay zeka](/docs/ai.md)) |
| (her uygulama) "Devoplus asistanına sorayım" | Araçlar (`agent.tools`) + `AGENT_GUIDE.md`; kullanıcının soracağı soruları siz çıkarın ([yapay zeka](/docs/ai.md)) |

Planlanan her yetki alanı manifest'e yazılır ve gerekiyorsa [erişim talebi](/docs/access-requests.md) gönderilir.
Sonraki adım: [hazır şablonlar](/docs/templates.md), ardından [başlangıç](/docs/getting-started.md).
