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;