import express from 'express'; import { perplexityService } from '../services/perplexityService'; import { SimplificationService } from '../services/simplificationService'; import { translateIncomingText, translateOutgoingResponse } from '../middleware/translationMiddleware'; import { z } from 'zod'; const router = express.Router(); // Input validation schema const questionSchema = z.object({ text: z.string().min(1), language: z.string().optional(), readingLevel: z.enum(['basic', 'intermediate', 'advanced']).optional().default('intermediate'), }); // Create controller function const askLegalQuestion = async (req: express.Request, res: express.Response) => { try { // Validate input const validatedInput = questionSchema.parse(req.body); // Get legal answer from Perplexity const answer = await perplexityService.askLegalQuestion({ question: validatedInput.text, language: validatedInput.language || 'en', location: 'default' }); // Create simplification service instance const simplificationService = new SimplificationService(); // Simplify the answer const simplified = await simplificationService.simplifyText(answer.answer); res.json({ text: simplified.text, originalText: answer.answer, readingLevel: simplified.readingLevel, language: validatedInput.language || 'en' }); } catch (error) { if (error instanceof z.ZodError) { res.status(400).json({ error: 'Invalid input', details: error.errors }); } else { console.error('Error in legal question route:', error); res.status(500).json({ error: 'Internal server error' }); } } }; // Add route with translation middleware router.post('/ask-legal-question', translateIncomingText, translateOutgoingResponse, askLegalQuestion ); export default router;