feat: file attachments in chat + document-select for case chat

- Yeni POST /api/documents/extract-text: dosyayı hiçbir yere
  kaydetmeden sadece metnini çıkarıp döner (chat ataç özelliği için)
- chatMessage ve sendThreadMessage artık body'de attachments
  ({filename,text}[]) kabul ediyor; AI bağlamına ekleniyor, kayıtlı
  mesaja da "[Ek dosya(lar): ...]" notu düşülüyor
- chatMessage ayrıca document_ids kabul ediyor — dosya sohbetinde
  kullanıcının bu mesajda özellikle işaret ettiği mevcut belge(ler)
  AI'ye vurgulanıyor

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
mstfyldz
2026-08-10 01:03:13 +03:00
co-authored by Claude Sonnet 5
parent 029402a620
commit 9618ff4513
3 changed files with 64 additions and 9 deletions
+23
View File
@@ -173,6 +173,29 @@ export async function extractTextFromUploadedFile(file: { buffer: Buffer; mimety
return typeof result === 'string' ? result : (result?.toText ? result.toText() : String(result || ''));
}
// Sohbet ekranlarındaki (genel Sohbet ve dosya bazlı "AyrisLegal'e Sor") ataç
// (dosya ekleme) özelliği için — dosyayı hiçbir yere kaydetmeden sadece metnini
// çıkarıp döner, çağıran taraf bu metni chat isteğine "attachments" olarak ekler.
export const extractAttachmentText = async (req: AuthenticatedRequest, res: Response) => {
try {
const file = req.file;
if (!file) {
return res.status(400).json({ error: 'Dosya bulunamadı.' });
}
let extractedText = '';
try {
extractedText = await extractTextFromUploadedFile(file);
} catch (err: any) {
console.error('Attachment Text Extraction Error:', err);
return res.status(400).json({ error: 'Dosya formatı okunamadı veya desteklenmiyor.' });
}
res.json({ filename: file.originalname, extracted_text: extractedText });
} catch (error: any) {
console.error('Extract Attachment Text Error:', error);
res.status(500).json({ error: error.message || 'Internal Server Error' });
}
};
export const uploadDocument = async (req: AuthenticatedRequest, res: Response) => {
try {
const file = req.file;