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.)
|
- "tarihler": (string) Belgedeki kritik tarihler (Dava tarihi, tebliğ vb.)
|
||||||
- "hukukiDayanak": (string) Belgedeki ilgili kanun maddeleri ve hukuki temeller
|
- "hukukiDayanak": (string) Belgedeki ilgili kanun maddeleri ve hukuki temeller
|
||||||
- "ilkDegerlendirme": (string) Dosyaya dair ilk stratejik ve hukuki değerlendirmen
|
- "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.
|
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();
|
.single();
|
||||||
if (analysisError) throw analysisError;
|
if (analysisError) throw analysisError;
|
||||||
analysisRecord = analysis;
|
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) {
|
} catch (analysisErr) {
|
||||||
// Analiz başarısız olsa da belge zaten kaydedildi — sohbet daha sonra
|
// Analiz başarısız olsa da belge zaten kaydedildi — sohbet daha sonra
|
||||||
// extracted_text'i yine de kullanabilir.
|
// extracted_text'i yine de kullanabilir.
|
||||||
@@ -392,6 +415,27 @@ export const uploadDocument = async (req: AuthenticatedRequest, res: Response) =
|
|||||||
|
|
||||||
if (analysisError) throw analysisError;
|
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
|
// Başarıyla frontend'e döndür
|
||||||
res.json({
|
res.json({
|
||||||
message: 'Document processed successfully',
|
message: 'Document processed successfully',
|
||||||
|
|||||||
Reference in New Issue
Block a user