feat(calendar): extract dates into case_events

This commit is contained in:
mstfyldz
2026-08-11 23:19:53 +03:00
parent f87b595ccd
commit 05341e1171
+44
View File
@@ -16,6 +16,7 @@ const ANALYSIS_SYSTEM_PROMPT = `
- "tarihler": (string) Belgedeki kritik tarihler (Dava tarihi, tebliğ vb.)
- "hukukiDayanak": (string) Belgedeki ilgili kanun maddeleri ve hukuki temeller
- "ilkDegerlendirme": (string) Dosyaya dair ilk stratejik ve hukuki değerlendirmen
- "events": (array) Varsa bir sonraki duruşma tarihi, kesin süre gibi ileriye dönük önemli tarihlerin listesi. Format: [{"date": "YYYY-MM-DD", "title": "Açıklama (Örn: 2. Celse Duruşması, Cevap Dilekçesi Süresi)", "type": "hearing" veya "deadline" veya "other"}] (Eğer tarih yoksa boş dizi [] döndür). "date" mutlaka ISO formatında (YYYY-MM-DD) olmalıdır. Eğer saat de belliyse (YYYY-MM-DDTHH:mm:00Z) şeklinde verebilirsin.
Sadece ve sadece JSON döndür, başka hiçbir açıklama ekleme.
`;
@@ -250,6 +251,28 @@ export const registerLocalDocument = async (req: AuthenticatedRequest, res: Resp
.single();
if (analysisError) throw analysisError;
analysisRecord = analysis;
// 5. Takvim (Case Events) kayıtlarını oluştur
if (summaryJson.events && Array.isArray(summaryJson.events)) {
const eventsToInsert = summaryJson.events
.filter((e: any) => e.date && e.title)
.map((e: any) => {
// Basit bir tarih doğrulaması (YYYY-MM-DD veya ISO date bekliyoruz)
const d = new Date(e.date);
return {
case_id: caseId,
document_id: documentRecord.id,
event_date: isNaN(d.getTime()) ? new Date().toISOString() : d.toISOString(),
title: e.title,
event_type: e.type && ['hearing', 'deadline', 'other'].includes(e.type) ? e.type : 'other'
};
});
if (eventsToInsert.length > 0) {
const { error: eventsError } = await supabase.from('case_events').insert(eventsToInsert);
if (eventsError) console.error('Error inserting case events:', eventsError);
}
}
} catch (analysisErr) {
// Analiz başarısız olsa da belge zaten kaydedildi — sohbet daha sonra
// extracted_text'i yine de kullanabilir.
@@ -392,6 +415,27 @@ export const uploadDocument = async (req: AuthenticatedRequest, res: Response) =
if (analysisError) throw analysisError;
// 5. Takvim (Case Events) kayıtlarını oluştur
if (summaryJson.events && Array.isArray(summaryJson.events)) {
const eventsToInsert = summaryJson.events
.filter((e: any) => e.date && e.title)
.map((e: any) => {
const d = new Date(e.date);
return {
case_id,
document_id: documentRecord.id,
event_date: isNaN(d.getTime()) ? new Date().toISOString() : d.toISOString(),
title: e.title,
event_type: e.type && ['hearing', 'deadline', 'other'].includes(e.type) ? e.type : 'other'
};
});
if (eventsToInsert.length > 0) {
const { error: eventsError } = await supabase.from('case_events').insert(eventsToInsert);
if (eventsError) console.error('Error inserting case events:', eventsError);
}
}
// Başarıyla frontend'e döndür
res.json({
message: 'Document processed successfully',