Commit Graph
79 Commits
Author SHA1 Message Date
Mustafa YildizandClaude Sonnet 5 407306914c chore: kaldırılan scratch.js dosyasını temizle
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-18 22:41:21 +03:00
Mustafa YildizandClaude Sonnet 5 aab94db1fa fix: kayıt sonrası deneme süresi mesajını 7 güne güncelle
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-18 22:39:36 +03:00
Mustafa YildizandClaude Sonnet 5 6202aadc8f feat: ceza muhakemesi usul/evrak/hüküm türü referansını dava analiz promptlarına ekle
Dava Özeti, Dava İlerlemesi, Çelişki Avcısı ve Strateji Analizi promptlarına
soruşturma/kovuşturma sırası, evrak türleri ve CMK m.223 hüküm türlerini
özetleyen ortak bir referans bloğu eklendi; AI dosyanın ceza davası olup
olmadığına kendi karar veriyor, rijit bir dava-türü sınıflandırması yok.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-18 22:38:33 +03:00
Mustafa YildizandClaude Sonnet 5 5fe4b0b8bc feat: WhatsApp AI hattı (n8n + Evolution API) için yeni uç nokta
chat.controller.ts'teki dosya-bağlamı toplama mantığı (belgeler + analiz
özeti + geçmiş mesajlar) buildCaseChatContext() olarak paylaşılan hale
getirildi — mevcut SSE sohbeti (chatMessage) davranış değişmeden bunu
kullanıyor, yeni POST /api/whatsapp/message uç noktası da aynı motoru
tek-seferlik (non-streaming) çağırıyor.

Kimlik doğrulama farklı: bu uç nokta bir Supabase oturumu taşımıyor
(n8n'den gelen anonim WhatsApp mesajı), X-Webhook-Secret ile korunuyor.
Telefon → hesap eşleştirmesi profiles.phone üzerinden, hangi dava
dosyasıyla konuşulduğu whatsapp_sessions'ta tutuluyor (bkz. laawos
sql/20_whatsapp_integration.sql).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-18 13:08:02 +03:00
Mustafa YildizandClaude Sonnet 5 fed881de49 fix: hardcoded 14 günlük trial fallback'i app_settings.trial_days'e taşı
Profil bulunamadığında otomatik açılan trial süresi Postgres trigger'ıyla
(handle_new_user, 3 gün) tutarsızdı. İkisi de artık aynı app_settings
tablosundan okuyor (bkz. laawos/sql/19_configurable_trial_and_status_gate.sql).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-18 12:43:01 +03:00
Mustafa Yildiz a5946eeb4a feat: Dava Özeti, Çelişki Avcısı ve Dilekçe Taslağı'na mevzuat entegrasyonu
mevzuat-etl'in doldurduğu Supabase mevzuat/mevzuat_madde tablolarından
(aynı proje) ilgili kanun maddelerini bulup analiz/taslak üretiminden önce
prompt'a ekliyor. Bulma: önce dava metnindeki açık atıfları regex ile yakala
(TCK m.141, 5237 sayılı Kanun'un 141. maddesi gibi, tur-agnostik), boşsa
precedent.controller.ts'deki AI-keyword-sıkıştırma + tam-metin arama
desenine düşer. Hiçbir zaman exception fırlatmaz, mevzuat bulunamazsa analiz
normal devam eder.

Dilekçe Taslağı (generateDraft) farklı ele alınıyor — çıktısı JSON değil düz
metin ve aynen dilekçe belgesi olarak kullanılıyor, bu yüzden referans
bloğu ayrıca işaretlenip sistem promptuna "kopyalama, sadece atıf yap"
talimatı eklendi. generateAngarya (Süre Tutum/Mazeret/Vekaletname) bilerek
dışarıda bırakıldı — hukuki tartışma içermeyen idari dilekçeler.

Tasarım: mevzuat-etl/docs/superpowers/specs/2026-08-17-laawos-mevzuat-entegrasyonu-design.md

Not: drafts.used_legislation (jsonb) sütunu Supabase Studio'dan elle eklendi.
2026-08-17 00:46:26 +03:00
Mustafa Yildiz 66a3960d90 fix: Ollama KEEP_ALIVE=-1 ve AbortError mesaj netliği, callAiModelRaw'a opsiyonel timeoutMs
KEEP_ALIVE '30m' -> -1: GPU'da bolca boş VRAM var, modeli sürekli bellekte
tutmanın maliyeti yok, 30dk sınırı gereksiz soğuk-başlangıç gecikmelerine
sebep oluyordu (bkz. 2026-08-14 log: 44GB boş / 17.5GB kullanılan).
2026-08-17 00:46:10 +03:00
Mustafa Yildiz 2324cb78a6 fix: resolve TypeScript TS18047 profile null type error in auth middleware 2026-08-15 17:04:14 +03:00
Mustafa Yildiz 146ba93a9b fix: auto-bind case user_id and auto-create missing user trial profiles in auth middleware to prevent 403 Forbidden errors 2026-08-15 17:01:30 +03:00
Mustafa Yildiz 6155a72830 fix: resolve false positive deficiency claims (görevsizlik kararı, doktor raporu, tanık beyanı) in case deficiency analysis 2026-08-15 16:58:58 +03:00
Mustafa Yildiz d86d843c61 feat: add CDATA section parser for UDF 1.8 template XML format 2026-08-15 11:08:20 +03:00
Mustafa Yildiz cab55c4fae fix: resolve UDF extraction false positive rejection on real UDF content.xml files 2026-08-15 11:06:41 +03:00
Mustafa Yildiz 389bbe33ef fix: filter out ZIP header metadata strings like content.xml and content.xmlPK from UDF text extractor 2026-08-15 11:03:26 +03:00
Mustafa Yildiz 9229c82806 fix: resolve 400 Bad Request on UDF attachment extraction with iconv-lite Turkish encoding support and fallback guarantee 2026-08-15 10:46:51 +03:00
Mustafa Yildiz 8962a63cf5 fix: upgrade UDF text extraction with multi-offset PK search and binary noise filter 2026-08-15 10:43:54 +03:00
Mustafa Yildiz 977239b0ca fix: improve UDF xml text extraction buffer reading 2026-08-15 10:31:16 +03:00
Mustafa Yildiz ad1f3107de fix: add robust fallback insert strategy for template upload to guarantee 100% upload success for UDF/binary files 2026-08-15 10:25:31 +03:00
Mustafa Yildiz 49841241be fix: add sanitizePostgresText to filter null bytes and malformed Unicode escape sequences before inserting template text into Supabase 2026-08-15 10:20:54 +03:00
mstfyldz 95478c09e8 fix: PK signature offset searching for UDF files in backend 2026-08-14 13:23:48 +03:00
mstfyldz 6dd34fe703 feat: enhance UDF file extraction pipeline to unzip container and handle content.xml or embedded PDF files 2026-08-14 13:13:37 +03:00
mstfyldz 644d5f4052 fix: strictly penalize pure mahkumiyet onamasi decisions on beraat search and extract beraat passages 2026-08-14 12:15:46 +03:00
mstfyldz 8ae98a9500 feat: smart intent-based precedent re-ranking for beraat/bozma/tazminat outcomes 2026-08-14 12:12:19 +03:00
mstfyldz 58ae3655b6 fix: insert assistant digital-intern responses into chat_messages table 2026-08-14 12:06:19 +03:00
mstfyldz ee83ea648d feat: complete targetPersona opponent attorney cross examination simulator prompts 2026-08-14 11:56:28 +03:00
mstfyldz d2ea58942c fix: add stream routes and guarantee finalJson answer property 2026-08-14 11:53:04 +03:00
mstfyldz c4947422dc feat: add digital-intern live-qa endpoints for pinpoint hearing assistance 2026-08-14 11:48:49 +03:00
mstfyldz d3f91d4da6 fix: support both clientName and client_name in analyzeStrategy and analyzeMediation 2026-08-14 11:42:59 +03:00
mstfyldz d7a99a9db0 fix: add role-based strategic goals and winSteps to runStrategyAnalysis 2026-08-14 11:39:37 +03:00
mstfyldz 11c26d6029 fix: re-orient STATEMENT_ANALYSIS_SYSTEM_PROMPT to focus on stage and cross-witness contradictions 2026-08-14 11:34:49 +03:00
mstfyldz 9f1ffedb88 fix: enforce K.H. Kamu Hukuku exclusion rule in STATEMENT_ANALYSIS_SYSTEM_PROMPT and filter output 2026-08-14 11:31:51 +03:00
mstfyldz 7da869224f fix: add alias routes for case analysis endpoints 2026-08-14 01:16:05 +03:00
mstfyldz fab80e05a0 feat: upgrade AI prompts to v2 specification with grounding and injection shield 2026-08-14 00:52:41 +03:00
mstfyldz f1457b02ca fix(chat): allow AI to finish and save responses even if client disconnects 2026-08-12 13:02:40 +03:00
mstfyldz d10ea1b0fd fix(chat): add SSE padding to bypass proxy buffering 2026-08-12 12:48:04 +03:00
mstfyldz 7b6b27909c chore: remove test files 2026-08-12 11:22:27 +03:00
mstfyldz e25bab8146 fix: Supabase storage upload hatasını çözmek için dosya adlarındaki Türkçe karakterler ve boşluklar temizlendi 2026-08-12 11:22:05 +03:00
mstfyldz 571e1f63d1 feat: Arabuluculuk & Müzakere Asistanı analiz endpoint'leri eklendi 2026-08-12 10:58:44 +03:00
mstfyldz 6916a7d9ba perf: prevent duplicate CDN uploads by checking Supabase first 2026-08-12 10:41:08 +03:00
mstfyldz b86aa54378 feat: migrate local file cache to BunnyCDN storage API 2026-08-12 10:35:44 +03:00
mstfyldz 437f973d6f feat: Add precedent caching mechanism via txt and supabase 2026-08-12 02:17:57 +03:00
mstfyldz f7daa3d4c7 feat(chat): add digital intern (live search) mode 2026-08-11 23:49:33 +03:00
mstfyldz 05341e1171 feat(calendar): extract dates into case_events 2026-08-11 23:19:53 +03:00
mstfyldz f87b595ccd feat(simulator): add opponent/judge simulator feature endpoints 2026-08-11 22:54:42 +03:00
mstfyldz 69edf3aa61 feat(drafting): add fast-path generateAngarya endpoint for routine petitions 2026-08-11 21:45:17 +03:00
mstfyldz 6299a269a1 feat: dava stratejisi olusturucu - analyzeStrategy endpoint 2026-08-11 17:02:18 +03:00
mstfyldz 5c8c676d45 feat: add deficiency analysis route 2026-08-11 16:30:22 +03:00
mstfyldz 05fcc00de9 revision 2026-08-11 16:27:02 +03:00
mstfyldz 6bd6da3776 fix: prevent duplicate document rows on OCR retry
registerLocalDocument always did a plain insert, so retrying a
document whose first OCR attempt failed created a new duplicate
row each time instead of updating the existing one. Now looks up
an existing (case_id, filename) match and updates it in place.
2026-08-11 11:09:05 +03:00
mstfyldz 8065df4ff0 fix: raise Express JSON body limit to 25mb for OCR image payloads
Default 100kb limit rejected base64-encoded scanned page images
with 413 Payload Too Large, breaking /documents/ocr-image for any
realistic scan.
2026-08-11 10:50:58 +03:00
mstfyldz a6c1eabaad fix: default OCR prompt to markdown output
Kullanıcı OCR sonuçlarının markdown formatında gelmesini istedi — test
edildi (gerçek çok sayfalı taranmış evrakta doğrulandı), tablo/başlık
yapısını doğru yakalıyor.
2026-08-11 10:28:19 +03:00