first commit
This commit is contained in:
@@ -0,0 +1,87 @@
|
||||
const Joi = require('joi');
|
||||
|
||||
const validate = (schema) => {
|
||||
return (req, res, next) => {
|
||||
const { error } = schema.validate(req.body);
|
||||
|
||||
if (error) {
|
||||
return res.status(400).json({
|
||||
success: false,
|
||||
error: error.details[0].message
|
||||
});
|
||||
}
|
||||
|
||||
next();
|
||||
};
|
||||
};
|
||||
|
||||
// Validation schemas
|
||||
const schemas = {
|
||||
register: Joi.object({
|
||||
email: Joi.string().email().required(),
|
||||
password: Joi.string().min(6).required(),
|
||||
firstName: Joi.string().min(2).required(),
|
||||
lastName: Joi.string().min(2).required(),
|
||||
role: Joi.string().valid('user', 'admin', 'expert').optional()
|
||||
}),
|
||||
|
||||
login: Joi.object({
|
||||
email: Joi.string().email().required(),
|
||||
password: Joi.string().required()
|
||||
}),
|
||||
|
||||
updateProfile: Joi.object({
|
||||
firstName: Joi.string().min(2).optional(),
|
||||
lastName: Joi.string().min(2).optional(),
|
||||
preferences: Joi.object().optional()
|
||||
}),
|
||||
|
||||
createConversation: Joi.object({
|
||||
title: Joi.string().min(1).optional()
|
||||
}),
|
||||
|
||||
sendMessage: Joi.object({
|
||||
conversationId: Joi.string().uuid().required(),
|
||||
content: Joi.string().min(1).required(),
|
||||
messageType: Joi.string().valid('text', 'plan', 'execution', 'feedback').optional()
|
||||
}),
|
||||
|
||||
submitFeedback: Joi.object({
|
||||
messageId: Joi.string().uuid().optional(),
|
||||
feedbackType: Joi.string().valid('positive', 'negative', 'correction', 'suggestion').required(),
|
||||
rating: Joi.number().min(1).max(5).optional(),
|
||||
comment: Joi.string().optional(),
|
||||
correctedContent: Joi.string().optional()
|
||||
}),
|
||||
|
||||
createModelVersion: Joi.object({
|
||||
modelName: Joi.string().min(1).required(),
|
||||
modelType: Joi.string().valid('MODEL1', 'QUERYMODEL').required(),
|
||||
baseModel: Joi.string().min(1).required(),
|
||||
fineTuningMethod: Joi.string().valid('SFT', 'DPO', 'PPO', 'LoRA', 'QLoRA').optional(),
|
||||
hyperparameters: Joi.object().optional()
|
||||
}),
|
||||
|
||||
executeTool: Joi.object({
|
||||
planId: Joi.string().uuid().required(),
|
||||
toolName: Joi.string().min(1).required(),
|
||||
toolType: Joi.string().valid('query_expander', 'extraction', 'report1', 'report2', 'web_search', 'encyclopedia_pdf').required(),
|
||||
inputParameters: Joi.object().required()
|
||||
}),
|
||||
|
||||
generatePlan: Joi.object({
|
||||
query: Joi.string().min(1).required(),
|
||||
conversationId: Joi.string().uuid().optional(),
|
||||
context: Joi.object().optional()
|
||||
}),
|
||||
|
||||
executePlan: Joi.object({
|
||||
planId: Joi.string().uuid().required(),
|
||||
options: Joi.object().optional()
|
||||
})
|
||||
};
|
||||
|
||||
module.exports = {
|
||||
validate,
|
||||
schemas
|
||||
};
|
||||
Reference in New Issue
Block a user