backend changes
This commit is contained in:
parent
58aada3d57
commit
0d3663f62d
@ -132,8 +132,27 @@ class Feature {
|
|||||||
|
|
||||||
// Persist rules (aggregated JSONB) if provided
|
// Persist rules (aggregated JSONB) if provided
|
||||||
try {
|
try {
|
||||||
const rawRules = featureData.logic_rules ?? featureData.business_rules ?? [];
|
let rawRules = [];
|
||||||
|
if (Array.isArray(featureData.logic_rules) && featureData.logic_rules.length > 0) {
|
||||||
|
rawRules = featureData.logic_rules;
|
||||||
|
} else if (Array.isArray(featureData.business_rules) && featureData.business_rules.length > 0) {
|
||||||
|
rawRules = featureData.business_rules;
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log('🔍 Feature.create - Raw rules data:', {
|
||||||
|
logic_rules: featureData.logic_rules,
|
||||||
|
business_rules: featureData.business_rules,
|
||||||
|
rawRules,
|
||||||
|
template_id: created.template_id,
|
||||||
|
feature_id: created.feature_id
|
||||||
|
});
|
||||||
|
|
||||||
|
if (rawRules.length > 0) {
|
||||||
await FeatureBusinessRules.upsert(created.template_id, created.feature_id, rawRules);
|
await FeatureBusinessRules.upsert(created.template_id, created.feature_id, rawRules);
|
||||||
|
console.log('✅ Feature.create - Business rules stored successfully');
|
||||||
|
} else {
|
||||||
|
console.log('⚠️ Feature.create - No business rules to store');
|
||||||
|
}
|
||||||
} catch (ruleErr) {
|
} catch (ruleErr) {
|
||||||
// Do not block feature creation if rules fail; log and continue
|
// Do not block feature creation if rules fail; log and continue
|
||||||
console.error('⚠️ Failed to persist aggregated business rules:', ruleErr.message);
|
console.error('⚠️ Failed to persist aggregated business rules:', ruleErr.message);
|
||||||
|
|||||||
@ -198,6 +198,12 @@ router.post('/', async (req, res) => {
|
|||||||
try {
|
try {
|
||||||
const featureData = req.body;
|
const featureData = req.body;
|
||||||
console.log('🏗️ Creating new feature:', featureData.name);
|
console.log('🏗️ Creating new feature:', featureData.name);
|
||||||
|
console.log('🔍 API Route - Received feature data:', {
|
||||||
|
name: featureData.name,
|
||||||
|
logic_rules: featureData.logic_rules,
|
||||||
|
business_rules: featureData.business_rules,
|
||||||
|
template_id: featureData.template_id
|
||||||
|
});
|
||||||
const requiredFields = ['template_id', 'name', 'complexity'];
|
const requiredFields = ['template_id', 'name', 'complexity'];
|
||||||
for (const field of requiredFields) {
|
for (const field of requiredFields) {
|
||||||
if (!featureData[field]) {
|
if (!featureData[field]) {
|
||||||
@ -211,7 +217,7 @@ router.post('/', async (req, res) => {
|
|||||||
|
|
||||||
const feature = await Feature.create({
|
const feature = await Feature.create({
|
||||||
template_id: featureData.template_id,
|
template_id: featureData.template_id,
|
||||||
feature_id: featureData.feature_id || `feature_${uuidv4()}`,
|
feature_id: featureData.id,
|
||||||
name: featureData.name,
|
name: featureData.name,
|
||||||
description: featureData.description,
|
description: featureData.description,
|
||||||
feature_type: featureData.feature_type || 'suggested',
|
feature_type: featureData.feature_type || 'suggested',
|
||||||
@ -219,18 +225,10 @@ router.post('/', async (req, res) => {
|
|||||||
display_order: featureData.display_order || 999,
|
display_order: featureData.display_order || 999,
|
||||||
is_default: featureData.is_default || false,
|
is_default: featureData.is_default || false,
|
||||||
created_by_user: featureData.created_by_user || false,
|
created_by_user: featureData.created_by_user || false,
|
||||||
|
logic_rules: featureData.logic_rules,
|
||||||
|
business_rules: featureData.business_rules,
|
||||||
});
|
});
|
||||||
|
|
||||||
// Persist aggregated rules
|
|
||||||
try {
|
|
||||||
const rules = Array.isArray(featureData.logic_rules)
|
|
||||||
? featureData.logic_rules
|
|
||||||
: featureData.business_rules ?? [];
|
|
||||||
await FeatureBusinessRules.upsert(feature.template_id, feature.feature_id, rules);
|
|
||||||
} catch (ruleErr) {
|
|
||||||
console.error('⚠️ Failed to persist feature business rules:', ruleErr.message);
|
|
||||||
}
|
|
||||||
|
|
||||||
res.status(201).json({ success: true, data: feature, message: `Feature '${feature.name}' created successfully in template_features table` });
|
res.status(201).json({ success: true, data: feature, message: `Feature '${feature.name}' created successfully in template_features table` });
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('❌ Error creating feature:', error.message);
|
console.error('❌ Error creating feature:', error.message);
|
||||||
@ -466,7 +464,7 @@ router.post('/custom', async (req, res) => {
|
|||||||
try {
|
try {
|
||||||
await Feature.create({
|
await Feature.create({
|
||||||
template_id: data.template_id,
|
template_id: data.template_id,
|
||||||
feature_id: `custom_${created.id}`,
|
feature_id: data.id,
|
||||||
name: data.name,
|
name: data.name,
|
||||||
description: data.description,
|
description: data.description,
|
||||||
feature_type: 'custom',
|
feature_type: 'custom',
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user