first commit
This commit is contained in:
@@ -0,0 +1,198 @@
|
||||
const model1Service = require('../services/model1Service');
|
||||
const { Plan, Conversation } = require('../models');
|
||||
const logger = require('../utils/logger');
|
||||
|
||||
const generatePlan = async (req, res) => {
|
||||
try {
|
||||
const { query, conversationId, context = {} } = req.body;
|
||||
const userId = req.user.userId;
|
||||
|
||||
if (!query) {
|
||||
return res.status(400).json({
|
||||
success: false,
|
||||
error: 'Query is required'
|
||||
});
|
||||
}
|
||||
|
||||
// Verify conversation belongs to user
|
||||
if (conversationId) {
|
||||
const conversation = await Conversation.findOne({
|
||||
where: {
|
||||
id: conversationId,
|
||||
user_id: userId
|
||||
}
|
||||
});
|
||||
|
||||
if (!conversation) {
|
||||
return res.status(404).json({
|
||||
success: false,
|
||||
error: 'Conversation not found'
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
// Generate plan using MODEL1
|
||||
const planData = await model1Service.generatePlan(query, context);
|
||||
|
||||
// Save plan if conversationId provided
|
||||
let savedPlan = null;
|
||||
if (conversationId) {
|
||||
savedPlan = await model1Service.savePlan(planData, conversationId, userId);
|
||||
}
|
||||
|
||||
logger.info(`MODEL1 plan generated for user: ${userId}`);
|
||||
|
||||
res.json({
|
||||
success: true,
|
||||
data: {
|
||||
plan: savedPlan || planData,
|
||||
processingTime: planData.processingTime,
|
||||
tokensUsed: planData.tokensUsed,
|
||||
model: planData.model
|
||||
}
|
||||
});
|
||||
} catch (error) {
|
||||
logger.error('MODEL1 plan generation error:', error);
|
||||
res.status(500).json({
|
||||
success: false,
|
||||
error: error.message
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
const validatePlan = async (req, res) => {
|
||||
try {
|
||||
const { planId } = req.params;
|
||||
const { feedback = [] } = req.body;
|
||||
|
||||
const result = await model1Service.validatePlan(planId, feedback);
|
||||
|
||||
res.json({
|
||||
success: true,
|
||||
data: result
|
||||
});
|
||||
} catch (error) {
|
||||
logger.error('MODEL1 plan validation error:', error);
|
||||
res.status(500).json({
|
||||
success: false,
|
||||
error: error.message
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
const getPlan = async (req, res) => {
|
||||
try {
|
||||
const { planId } = req.params;
|
||||
const userId = req.user.userId;
|
||||
|
||||
const plan = await Plan.findOne({
|
||||
where: {
|
||||
id: planId
|
||||
},
|
||||
include: [
|
||||
{
|
||||
model: Conversation,
|
||||
where: {
|
||||
user_id: userId
|
||||
},
|
||||
attributes: ['id', 'title', 'user_id']
|
||||
}
|
||||
]
|
||||
});
|
||||
|
||||
if (!plan) {
|
||||
return res.status(404).json({
|
||||
success: false,
|
||||
error: 'Plan not found'
|
||||
});
|
||||
}
|
||||
|
||||
res.json({
|
||||
success: true,
|
||||
data: { plan }
|
||||
});
|
||||
} catch (error) {
|
||||
logger.error('Get plan error:', error);
|
||||
res.status(500).json({
|
||||
success: false,
|
||||
error: 'Internal server error'
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
const updatePlan = async (req, res) => {
|
||||
try {
|
||||
const { planId } = req.params;
|
||||
const { title, description, steps, status, approvalFeedback } = req.body;
|
||||
const userId = req.user.userId;
|
||||
|
||||
const plan = await Plan.findOne({
|
||||
where: {
|
||||
id: planId
|
||||
},
|
||||
include: [
|
||||
{
|
||||
model: Conversation,
|
||||
where: {
|
||||
user_id: userId
|
||||
},
|
||||
attributes: ['id', 'title', 'user_id']
|
||||
}
|
||||
]
|
||||
});
|
||||
|
||||
if (!plan) {
|
||||
return res.status(404).json({
|
||||
success: false,
|
||||
error: 'Plan not found'
|
||||
});
|
||||
}
|
||||
|
||||
const updateData = {};
|
||||
if (title) updateData.title = title;
|
||||
if (description) updateData.description = description;
|
||||
if (steps) updateData.steps = steps;
|
||||
if (status) updateData.status = status;
|
||||
if (approvalFeedback) updateData.approval_feedback = approvalFeedback;
|
||||
|
||||
await plan.update(updateData);
|
||||
|
||||
logger.info(`Plan updated: ${planId}, status: ${status}`);
|
||||
|
||||
res.json({
|
||||
success: true,
|
||||
data: { plan }
|
||||
});
|
||||
} catch (error) {
|
||||
logger.error('Update plan error:', error);
|
||||
res.status(500).json({
|
||||
success: false,
|
||||
error: 'Internal server error'
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
const getModelStatus = async (req, res) => {
|
||||
try {
|
||||
const status = await model1Service.getModelStatus();
|
||||
|
||||
res.json({
|
||||
success: true,
|
||||
data: status
|
||||
});
|
||||
} catch (error) {
|
||||
logger.error('MODEL1 status error:', error);
|
||||
res.status(500).json({
|
||||
success: false,
|
||||
error: error.message
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
module.exports = {
|
||||
generatePlan,
|
||||
validatePlan,
|
||||
getPlan,
|
||||
updatePlan,
|
||||
getModelStatus
|
||||
};
|
||||
Reference in New Issue
Block a user