feat(calendar): extract dates into case_events
This commit is contained in:
@@ -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',
|
||||
|
||||
Reference in New Issue
Block a user