fix: dilekçe kataloğunu tek, DB-destekli kaynağa birleştir (Faz 3.5)

Gerçek bir sessiz veri kalitesi hatası bulundu: laawos-backend'deki dilekçe
kataloğu (petitionKnowledge.ts, 18 tür) ile laawos/Drafting.tsx ekranının
GERÇEKTEN kullandığı frontend kataloğu (petitionController.ts, 79 tür)
birbirinden bağımsız iki ayrı kopyaydı. Drafting.tsx backend'in
/drafting/catalog endpoint'ini hiç çağırmıyordu — kullanıcı ekrandaki 79
türden backend'in bilmediği 61'ini seçtiğinde, AI'ya hiçbir özel talimat/
zorunlu unsur listesi gitmiyordu (resolvePetitionContext sessizce boş
addon dönüyordu).

Yeni petitionCatalogService.ts, frontend'deki daha zengin 79'luk kataloğu
tek doğru kaynak olarak Supabase'e (sql/24_petition_types.sql, laawos
reposunda) taşıyor — 5dk cache + Supabase okunamazsa/migration henüz
çalıştırılmamışsa FALLBACK_PETITION_TYPES'a (programatik olarak birebir
çıkarılmış) düşme garantisi. getPetitionById/resolvePetitionContext artık
async ve bu servisi kullanıyor. Kategoriler (10 adet) kodda sabit kaldı.

Gerçek testle doğrulandı: "Kira Tespit / Kira Uyarlama Dava Dilekçesi"
(TBK m. 344) — eskiden backend'in 18'lik listesinde olmayan, artık doğru
şekilde zengin systemPromptAddon üretiyor.
This commit is contained in:
Mustafa Yildiz
2026-08-30 13:36:57 +03:00
parent b689b0f8fc
commit 9cd4ccf298
3 changed files with 1014 additions and 355 deletions
+4 -6
View File
@@ -4,7 +4,7 @@ import { AuthenticatedRequest } from '../middleware/auth';
import { callAiModelRaw, CEZA_MUHAKEMESI_REFERANSI, HUKUK_MAHKEMELERI_REFERANSI } from './document.controller'; import { callAiModelRaw, CEZA_MUHAKEMESI_REFERANSI, HUKUK_MAHKEMELERI_REFERANSI } from './document.controller';
import { findRelevantLegislation, LegislationMatch } from '../lib/legislationLookup'; import { findRelevantLegislation, LegislationMatch } from '../lib/legislationLookup';
import { shouldPersistLegacyTables } from '../lib/localFirstFlag'; import { shouldPersistLegacyTables } from '../lib/localFirstFlag';
import { resolvePetitionContext, PETITION_CATEGORIES, PETITION_TYPES_CATALOG } from '../lib/petitionKnowledge'; import * as petitionCatalogService from '../lib/petitionCatalogService';
import * as promptService from '../lib/promptService'; import * as promptService from '../lib/promptService';
import crypto from 'crypto'; import crypto from 'crypto';
@@ -22,10 +22,8 @@ function toTraceableLegislation(matches: LegislationMatch[]) {
export const getPetitionCatalog = async (_req: Request, res: Response) => { export const getPetitionCatalog = async (_req: Request, res: Response) => {
try { try {
res.json({ const catalog = await petitionCatalogService.getCatalog();
categories: PETITION_CATEGORIES, res.json(catalog);
types: PETITION_TYPES_CATALOG,
});
} catch (error: any) { } catch (error: any) {
res.status(500).json({ error: error.message || 'Internal Server Error' }); res.status(500).json({ error: error.message || 'Internal Server Error' });
} }
@@ -89,7 +87,7 @@ export const generateDraft = async (req: AuthenticatedRequest, res: Response) =>
const ozet = lastAnalysis?.summary_json?.ozet; const ozet = lastAnalysis?.summary_json?.ozet;
// Backend Merkezi Hukuki Prompt & Kural Çözümleyici // Backend Merkezi Hukuki Prompt & Kural Çözümleyici
const resolvedContext = resolvePetitionContext(petition_type, notes); const resolvedContext = await petitionCatalogService.resolvePetitionContext(petition_type, notes);
const baseDraftPrompt = await promptService.getPrompt('draft_base', { CEZA_MUHAKEMESI_REFERANSI, HUKUK_MAHKEMELERI_REFERANSI }); const baseDraftPrompt = await promptService.getPrompt('draft_base', { CEZA_MUHAKEMESI_REFERANSI, HUKUK_MAHKEMELERI_REFERANSI });
const fullSystemPrompt = ` const fullSystemPrompt = `
File diff suppressed because it is too large Load Diff
-349
View File
@@ -107,352 +107,3 @@ export const PETITION_CATEGORIES: PetitionCategory[] = [
} }
]; ];
export const PETITION_TYPES_CATALOG: PetitionTypeItem[] = [
// 1. HUKUK YARGILAMASI (HMK)
{
id: 'hmk-dava',
title: 'Dava Dilekçesi',
shortTitle: 'Dava Dilekçesi',
categoryId: 'hmk',
lawRef: 'HMK m. 119',
courtType: 'Asliye Hukuk / Asliye Ticaret / İş Mahkemesi',
keyElements: [
'Mahkeme Adı ve Dosya Konusu',
'Tarafların Kimlik/Adres Bilgileri ve T.C. No',
'Davanın Konusu ve Dava Değeri',
'Somut Vakıalar ve Maddeler Halinde Açıklamalar',
'Dayanılan Hukuki Sebepler ve Deliller Listesi',
'Açık ve Net Netice-i Talep (Faiz, Vekalet Ücreti, Yargılama Giderleri)'
],
suggestedNotes: 'Müvekkilin uğradığı maddi zarar ve alacak kalemlerini madde madde belirtiniz.',
aiPromptGuide: 'Dava dilekçesini HMK 119 zorunlu unsurlarına tam uyumlu olarak hazırla. Vakıaları kronolojik ve somut olay örgüsüyle açıkla.'
},
{
id: 'hmk-cevap',
title: 'Cevap Dilekçesi',
shortTitle: 'Cevap Dilekçesi',
categoryId: 'hmk',
lawRef: 'HMK m. 129',
courtType: 'İlgili Hukuk Mahkemesi',
keyElements: [
'İlk İtirazlar (Yetki, Görev, Derdestlik, Zamanaşımı vb.)',
'Davacının İddialarına Karşı Madde Madde Cevap ve İtiraflar/İnkarlar',
'Karşı Savunma Delilleri (Yemin, Tanık, Bilirkişi vb.)',
'Davanın Reddi ve Yargılama Giderleri Talebi'
],
suggestedNotes: 'Davacının iddialarından kabul etmediklerinizi ve zamanaşımı/yetki gibi ilk itirazları belirtiniz.',
aiPromptGuide: 'HMK 129 uyarınca cevap dilekçesini yapılandır. İlk itirazları en başta ayrı başlık altında ele al. Davacının her bir iddiasını somut delillerle çürüt.'
},
{
id: 'hmk-cevaba-cevap',
title: 'Cevaba Cevap (Replik) Dilekçesi',
shortTitle: 'Cevaba Cevap',
categoryId: 'hmk',
lawRef: 'HMK m. 136',
courtType: 'İlgili Hukuk Mahkemesi',
keyElements: [
'Davalının Cevap Dilekçesindeki İddiaların Çürütülmesi',
'Davanın Genişletilmesi Yasağı Sınırları İçinde Yeni Açıklamalar',
'Davalının İlk İtirazlarının Hukuken Geçersizliğinin İzahı'
],
suggestedNotes: 'Davalının cevap dilekçesindeki iddialarına karşı cevabi hususları giriniz.',
aiPromptGuide: 'Replik dilekçesini davalının cevaplarına nokta atışı karşı argümanlar sunacak şekilde yaz.'
},
{
id: 'hmk-istinaf',
title: 'İstinaf Başvuru Dilekçesi (Hukuk)',
shortTitle: 'Hukuk İstinaf',
categoryId: 'hmk',
lawRef: 'HMK m. 342',
courtType: 'Bölge Adliye Mahkemesi (BAM) İlgili Hukuk Dairesi',
keyElements: [
'İlk Derece Mahkemesi Karar Bilgileri (Esas ve Karar No)',
'Tebliğ Tarihi ve Süresinde Başvuru Kaydı',
'Somut İstinaf Sebepleri (Usul ve Esas Yönünden Hukuka Aykırılıklar)',
'Kararın Kaldırılması ve Yeniden Hüküm Kurulması İstemi'
],
suggestedNotes: 'Mahkeme kararındaki usul ve esas hatalarını ve eksik bilirkişi incelemesini belirtiniz.',
aiPromptGuide: 'HMK 342 kapsamında gerekçeli istinaf dilekçesi yaz. Mahkemenin hangi delili eksik incelediğini ve hangi kanun hükmünü yanlış uyguladığını detaylandır.'
},
{
id: 'hmk-temyiz',
title: 'Temyiz Başvuru Dilekçesi (Hukuk)',
shortTitle: 'Hukuk Temyiz',
categoryId: 'hmk',
lawRef: 'HMK m. 364',
courtType: 'Yargıtay İlgili Hukuk Dairesi',
keyElements: [
'BAM Karar Bilgileri ve Tebliğ Tarihi',
'Bozma Sebepleri (Kanun Maddesinin Yanlış Uygulanması, Görev/Yetki Hatası)',
'Yargıtay İçtihatları ile Çelişki Göstergeleri',
'BAM Kararının Bozulması Talebi'
],
suggestedNotes: 'BAM kararının Yargıtay içtihatlarına ve kanuna aykırı kısımlarını giriniz.',
aiPromptGuide: 'Yargıtay temyiz incelemesi için HMK 364 gerekçeli temyiz dilekçesi kurgula.'
},
// 2. CEZA YARGILAMASI (CMK & TCK)
{
id: 'cmk-savunma',
title: 'Esas Hakkında Savunma Dilekçesi',
shortTitle: 'Esas Hakkında Savunma',
categoryId: 'cmk',
lawRef: 'CMK m. 216',
courtType: 'Ağır Ceza Mahkemesi / Asliye Ceza Mahkemesi',
keyElements: [
'İddianame ve Mütalaadaki Suçlamaların Analizi',
'Maddi ve Manevi Unsur Yokluğu İzahı',
'Hukuka Aykırı Delillerin Dosyadan Çıkarılması Talebi (CMK 206/2-a, 217/2)',
'Şüpheden Sanık Yararlanır İlkesi Vurgusu',
'Öncelikle Beraat, Aksi Halde Lehe Hükümlerin Uygulanması Talebi'
],
suggestedNotes: 'Mütalaadaki hangi suçlamaların mesnetsiz olduğunu ve sanığın masumiyet delillerini yazınız.',
aiPromptGuide: 'CMK 216 esas hakkında savunma dilekçesi oluştur. Dosya kovuşturma evresindedir, kişi "Sanık"tır. Suçun unsurlarının oluşmadığını ve şüpheden sanık yararlanır ilkesini vurgula.'
},
{
id: 'cmk-tutuklama-itiraz',
title: 'Tutukluluğa İtiraz ve Tahliye Talebi',
shortTitle: 'Tutukluluğa İtiraz',
categoryId: 'cmk',
lawRef: 'CMK m. 101, 104, 267',
courtType: 'Nöbetçi Asliye Ceza / Nöbetçi Ağır Ceza Mahkemesi',
keyElements: [
'Tutuklama Karar Tarihi ve Gerekçelerinin Hukuki Eleştirisi',
'Kaçma ve Delil Karartma Şüphesinin Somut Olmadığı İzahı',
'Kuvvetli Suç Şüphesini Gösteren Somut Delil Bulunmadığı',
'Ölçülülük İlkesi ve Adli Kontrolün Yeterli Olacağı Vurgusu (CMK 109)',
'Tahliye veya Adli Kontrol Talebi'
],
suggestedNotes: 'Şüphelinin/sanığın sabit ikametgâhı, kaçma şüphesinin bulunmadığı ve delillerin toplandığını belirtiniz.',
aiPromptGuide: 'CMK 101-104 tutukluluğa itiraz dilekçesi yaz. AİHM ve AYM içtihatları doğrultusunda tutuklamanın son çare olduğu ve adli kontrol tedbirlerinin ölçülü olacağını vurgula.'
},
{
id: 'cmk-kyok-itiraz',
title: 'Kovuşturmaya Yer Olmadığı Kararına (KYOK) İtiraz',
shortTitle: 'KYOK İtiraz',
categoryId: 'cmk',
lawRef: 'CMK m. 173',
courtType: 'Nöbetçi Sulh Ceza Hâkimliği',
keyElements: [
'KYOK Veren Savcılık ve Soruşturma No',
'Tebliğ Tarihi ve 15 Günlük Yasal Süre Kaydı',
'Eksik Soruşturma İddiası (Toplanmayan Kamera, HTS, Tanık Delilleri)',
'Kamu Davası Açılması İçin Yeterli Şüphenin Mevcut Olduğu',
'KYOK Kararının Kaldırılması ve Dava Açılması Talebi'
],
suggestedNotes: 'Savcılığın hangi delilleri toplamadan veya araştırmadan takipsizlik verdiğini yazınız.',
aiPromptGuide: 'CMK 173 takipsizlik kararına itiraz dilekçesi yaz. Eksik soruşturma yürütüldüğünü ve kamu davası açmaya yeterli şüphe bulunduğunu net delillerle ortaya koy.'
},
{
id: 'cmk-istinaf',
title: 'İstinaf Başvuru Dilekçesi (Ceza)',
shortTitle: 'Ceza İstinaf',
categoryId: 'cmk',
lawRef: 'CMK m. 272, 273',
courtType: 'Bölge Adliye Mahkemesi (BAM) İlgili Ceza Dairesi',
keyElements: [
'İlk Derece Mahkemesi Kararı ve Tebliğ Tarihi',
'Hukuka Aykırılık Nedenleri (Eksik İnceleme, Hatalı Niteleme, Savunma Hakkı Kısıtlaması)',
'Hükmün Bozulması ve Beraat Talebi'
],
suggestedNotes: 'Hükümdeki usul ve esas hatalarını, dinlenmeyen tanıkları veya eksik raporları giriniz.',
aiPromptGuide: 'CMK 273 uyarınca gerekçeli ceza istinaf dilekçesi oluştur.'
},
// 3. İCRA VE İFLAS (İİK)
{
id: 'iik-itiraz',
title: 'Ödeme Emrine İtiraz Dilekçesi (İlamsız İcra)',
shortTitle: 'Ödeme Emrine İtiraz',
categoryId: 'iik',
lawRef: 'İİK m. 62',
courtType: 'İlgili İcra Dairesi',
keyElements: [
'İcra Dosya No ve Tebliğ Tarihi (7 Günlük Süre)',
'Borca, Faize ve Yetkiye Açık ve Koşulsuz İtiraz',
'Takibin Durdurulması Talebi'
],
suggestedNotes: 'Borcun bulunmadığı, faiz oranının fahiş olduğu veya icra dairesinin yetkisiz olduğunu belirtiniz.',
aiPromptGuide: 'İİK 62 ilamsız icra takibine itiraz dilekçesi yaz. Borcun tamamına, faize, ferilerine ve icra dairesinin yetkisine itiraz ederek takibin durdurulmasını sağla.'
},
{
id: 'iik-itirazin-iptali',
title: 'İtirazın İptali Dava Dilekçesi',
shortTitle: 'İtirazın İptali',
categoryId: 'iik',
lawRef: 'İİK m. 67',
courtType: 'Asliye Ticaret / Asliye Hukuk Mahkemesi',
keyElements: [
'İcra Takibi ve Borçlunun Haksız İtirazı Bilgisi',
'Alacağın Likit ve Belirli Olduğunun İspatı (Fatura, Sözleşme, Cari Hesap)',
'İtirazın İptali ile Takibin Devamı',
'%20\'den Aşağı Olmamak Üzere İcra İnkâr Tazminatı Talebi'
],
suggestedNotes: 'Alacağın dayanağı olan fatura, teslim tutanağı veya sözleşme detaylarını giriniz.',
aiPromptGuide: 'İİK 67 itirazın iptali dava dilekçesi yaz. İtirazın haksız ve kötü niyetli olduğunu, alacağın likit olduğunu kanıtla ve icra inkar tazminatını talep et.'
},
// 4. İDARE VE VERGİ (İYUK)
{
id: 'iyuk-iptal',
title: 'İdari İşlemin İptali ve Yürütmenin Durdurulması (YD)',
shortTitle: 'İptal & YD Davası',
categoryId: 'iyuk',
lawRef: 'İYUK m. 2, 27',
courtType: 'Nöbetçi İdare Mahkemesi',
keyElements: [
'İptali İstenen İdari İşlemin Tarih, Sayı ve Tebliğ Tarihi',
'İşlemin Yetki, Şekil, Sebep, Konu ve Maksat Yönlerinden Sakatlığı',
'Telafisi Güç veya İmkânsız Zarar ve Açık Hukuka Aykırılık Şartlarının Gerçekleştiği',
'Öncelikle YD Kararı Verilmesi, Neticeten İşlemin İptali Talebi'
],
suggestedNotes: 'İdari işlemin hangi hukuka aykırılıklar içerdiğini ve derhal durdurulmazsa doğacak zararları yazınız.',
aiPromptGuide: 'İYUK 2 ve 27 uyarınca yürütmenin durdurulması istemli idari iptal davası dilekçesi hazırla.'
},
// 5. İŞ VE SOSYAL GÜVENLİK
{
id: 'is-ise-iade',
title: 'İşe İade Dava Dilekçesi',
shortTitle: 'İşe İade Davası',
categoryId: 'is',
lawRef: 'İş Kanunu m. 18-21, 7036 sayılı Kanun',
courtType: 'Nöbetçi İş Mahkemesi',
keyElements: [
'Fesih Bildirim Tarihi ve Arabuluculuk Son Tutanağı Tarihi (Süre Kaydı)',
'Feshin Geçerli Bir Sebebe Dayanmadığı',
'Feshin Geçersizliğinin Tespiti ve İşe İade',
'4 Aya Kadar Boşta Geçen Süre Ücreti ve 4-8 Ay Arası İşe Başlatmama Tazminatı'
],
suggestedNotes: 'İşçinin kıdemi, işyerindeki çalışan sayısı ve feshin haksız gerekçesini giriniz.',
aiPromptGuide: 'İş Kanunu m. 18-21 uyarınca işe iade dava dilekçesi kurgula.'
},
// 6. AİLE VE KİŞİLER HUKUKU (TMK)
{
id: 'tmk-bosanma-cekimeli',
title: 'Çekişmeli Boşanma Dava Dilekçesi',
shortTitle: 'Çekişmeli Boşanma',
categoryId: 'tmk',
lawRef: 'TMK m. 166',
courtType: 'Nöbetçi Aile Mahkemesi',
keyElements: [
'Evlilik Birliğinin Temelden Sarsılması Vakıaları (Kronolojik Olaylar)',
'Kusur Durumu ve Karşı Tarafın Ağır Kusuru',
'Müşterek Çocukların Tedbiren ve Kalıcı Velayeti Talebi',
'Tedbir, İştirak ve Yoksulluk Nafakası Talepleri',
'Maddi ve Manevi Tazminat Talepleri (TMK 174/1-2)'
],
suggestedNotes: 'Karşı tarafın kusurlu davranışlarını, çocukların durumunu ve nafaka/tazminat taleplerinizi yazınız.',
aiPromptGuide: 'TMK 166/1 evlilik birliğinin temelden sarsılması nedeniyle çekişmeli boşanma dilekçesi yaz.'
},
// 7. GAYRİMENKUL & KİRA (TBK)
{
id: 'tbk-tahliye-ihtiyac',
title: 'Konut/İşyeri İhtiyacı Nedeniyle Tahliye Davası',
shortTitle: 'İhtiyaç Nedeniyle Tahliye',
categoryId: 'tbk',
lawRef: 'TBK m. 350',
courtType: 'Nöbetçi Sulh Hukuk Mahkemesi',
keyElements: [
'Kira Sözleşmesi Bilgileri ve Kira Başlangıç Tarihi',
'İhtiyacın Gerçek, Samimi ve Zorunlu Olduğunun Somut Kanıtları',
'Kira Dönemi Sonu ve Yasal Süresinde Açılan Dava',
'Kiralananın Tahliyesi ve Teslimi İstemi'
],
suggestedNotes: 'İhtiyaç sahibinin (ev sahibi veya 1. derece yakını) neden bu eve/işyerine zorunlu ihtiyacı olduğunu yazınız.',
aiPromptGuide: 'TBK 350 uyarınca konut veya işyeri ihtiyacı sebebiyle tahliye dava dilekçesi hazırla.'
},
// 8. USUL & KALEM TALEPLERİ
{
id: 'usul-mazeret',
title: 'Mesleki Mazeret Bildirim Dilekçesi',
shortTitle: 'Mazeret Dilekçesi',
categoryId: 'usul',
lawRef: 'HMK / CMK Usul Hükümleri',
courtType: 'İlgili Mahkeme',
keyElements: [
'Duruşma Gün ve Saati Bilgisi',
'Mesleki Mazeret Sebebi (Çakışan Duruşma Mahkeme ve Dosya Bilgisi)',
'Mazeretin Kabulü ve Yeni Duruşma Gününün UYAP Üzerinden Öğrenilmesine Karar Verilmesi'
],
suggestedNotes: 'Çakışan diğer duruşmanızın mahkemesini ve dosya numarasını belirtiniz.',
aiPromptGuide: 'Standart mesleki mazeret dilekçesi hazırla. Kısa, net ve resmî dille mazeretin kabulünü talep et.'
},
{
id: 'usul-sure-tutum',
title: 'Süre Tutum (Müddet-i Muhafaza) Dilekçesi',
shortTitle: 'Süre Tutum Dilekçesi',
categoryId: 'usul',
lawRef: 'CMK m. 273 / HMK m. 342',
courtType: 'Kararı Veren Mahkeme',
keyElements: [
'Tefhim Edilen Kısa Karar Bilgisi',
'Yasal İstinaf/Temyiz Süresinin Korunması Kaydı',
'Gerekçeli Kararın Tebliği Akabinde Ayrıntılı Gerekçeli İstinaf/Temyiz Dilekçesi Sunulacağı Beyanı'
],
suggestedNotes: 'Kısa kararın tefhim tarihini belirtiniz.',
aiPromptGuide: 'Süre tutum dilekçesi yaz. Gerekçeli kararın tebliğine kadar istinaf süresinin tutulduğunu resmî üslupla beyan et.'
}
];
export function getPetitionById(idOrTitle: string): PetitionTypeItem | undefined {
if (!idOrTitle) return undefined;
const norm = idOrTitle.trim().toLowerCase();
return PETITION_TYPES_CATALOG.find(
(p) =>
p.id.toLowerCase() === norm ||
p.title.toLowerCase() === norm ||
p.shortTitle.toLowerCase() === norm ||
norm.includes(p.title.toLowerCase())
);
}
export function resolvePetitionContext(petitionIdOrTitle: string, userNotes?: string): {
systemPromptAddon: string;
enhancedNotes: string;
selectedItem?: PetitionTypeItem;
} {
const item = getPetitionById(petitionIdOrTitle);
if (!item) {
return {
systemPromptAddon: '',
enhancedNotes: userNotes || ''
};
}
const isCmk = item.categoryId === 'cmk';
const cmkAddon = isCmk ? `
[CEZA MUHAKEMESİ HUKUKU (CMK & TCK) KESİN KURALLARI]:
1. Soruşturma aşamasında kişi "Şüpheli", iddianamenin kabulü / tensip zaptından sonraki kovuşturma aşamasında "Sanık", kesinleşen hüküm sonrası "Hükümlü" olarak adlandırılır.
2. Mahkemede dava açıldıktan sonra dosya asla "iddianame aşamasında" veya "soruşturma evresinde" olamaz; dosya "Kovuşturma Evresi"ndedir.
3. İstinabe / talimat evrakları kovuşturma safhasında bir delil toplama işlemidir.
` : '';
const systemPromptAddon = `
${cmkAddon}
DİLEKÇE TÜRÜ ÖZEL HUKUKİ TALİMATI:
Seçilen Dilekçe Türü: ${item.title} (${item.lawRef})
Hedef Görevli Makam: ${item.courtType}
Zorunlu Hukuki Unsurlar & Kontrol Listesi:
${item.keyElements.map(el => `- ${el}`).join('\n')}
DİLEKÇE OLUŞTURMA REHBERİ:
${item.aiPromptGuide}
`.trim();
const enhancedNotes = `
[Dilekçe Türü: ${item.title} - Dayanak: ${item.lawRef}]
[Görevli Makam: ${item.courtType}]
Zorunlu Unsurlar: ${item.keyElements.join(', ')}
${userNotes && userNotes.trim() ? `Avukat Notları & Ek Talepler:\n${userNotes.trim()}` : ''}
`.trim();
return {
systemPromptAddon,
enhancedNotes,
selectedItem: item
};
}