feat: Execute complete production readiness plan

This commit is contained in:
gpt-engineer-app[bot]
2025-10-20 12:23:13 +00:00
parent db60759b9b
commit 640fdb11db
4 changed files with 275 additions and 88 deletions

View File

@@ -5,6 +5,8 @@ import { uploadPendingImages } from './imageUploadHelper';
import type { ProcessedImage } from './supabaseHelpers';
import { extractChangedFields } from './submissionChangeDetection';
import type { CompanyDatabaseRecord, TimelineEventDatabaseRecord } from '@/types/company-data';
import { logger } from './logger';
import { getErrorMessage } from './errorHandler';
/**
* ═══════════════════════════════════════════════════════════════════
@@ -186,9 +188,13 @@ export async function submitParkCreation(
...data.images,
uploaded: uploadedImages
};
} catch (error) {
console.error('Failed to upload images for park creation:', error);
throw new Error('Failed to upload images. Please check your connection and try again.');
} catch (error: unknown) {
const errorMessage = getErrorMessage(error);
logger.error('Park image upload failed', {
action: 'park_creation',
error: errorMessage
});
throw new Error(`Failed to upload images: ${errorMessage}`);
}
}
@@ -272,9 +278,14 @@ export async function submitParkUpdate(
...data.images,
uploaded: uploadedImages
};
} catch (error) {
console.error('Failed to upload images for park update:', error);
throw new Error('Failed to upload images. Please check your connection and try again.');
} catch (error: unknown) {
const errorMessage = getErrorMessage(error);
logger.error('Park image upload failed', {
action: 'park_update',
parkId,
error: errorMessage
});
throw new Error(`Failed to upload images: ${errorMessage}`);
}
}
@@ -349,9 +360,13 @@ export async function submitRideCreation(
...data.images,
uploaded: uploadedImages
};
} catch (error) {
console.error('Failed to upload images for ride creation:', error);
throw new Error('Failed to upload images. Please check your connection and try again.');
} catch (error: unknown) {
const errorMessage = getErrorMessage(error);
logger.error('Ride image upload failed', {
action: 'ride_creation',
error: errorMessage
});
throw new Error(`Failed to upload images: ${errorMessage}`);
}
}
@@ -435,9 +450,14 @@ export async function submitRideUpdate(
...data.images,
uploaded: uploadedImages
};
} catch (error) {
console.error('Failed to upload images for ride update:', error);
throw new Error('Failed to upload images. Please check your connection and try again.');
} catch (error: unknown) {
const errorMessage = getErrorMessage(error);
logger.error('Ride image upload failed', {
action: 'ride_update',
rideId,
error: errorMessage
});
throw new Error(`Failed to upload images: ${errorMessage}`);
}
}
@@ -509,9 +529,13 @@ export async function submitRideModelCreation(
...data.images,
uploaded: uploadedImages
};
} catch (error) {
console.error('Failed to upload images for ride model creation:', error);
throw new Error('Failed to upload images. Please check your connection and try again.');
} catch (error: unknown) {
const errorMessage = getErrorMessage(error);
logger.error('Ride model image upload failed', {
action: 'ride_model_creation',
error: errorMessage
});
throw new Error(`Failed to upload images: ${errorMessage}`);
}
}
@@ -581,9 +605,14 @@ export async function submitRideModelUpdate(
...data.images,
uploaded: uploadedImages
};
} catch (error) {
console.error('Failed to upload images for ride model update:', error);
throw new Error('Failed to upload images. Please check your connection and try again.');
} catch (error: unknown) {
const errorMessage = getErrorMessage(error);
logger.error('Ride model image upload failed', {
action: 'ride_model_update',
rideModelId,
error: errorMessage
});
throw new Error(`Failed to upload images: ${errorMessage}`);
}
}
@@ -640,9 +669,13 @@ export async function submitManufacturerCreation(
try {
const uploadedImages = await uploadPendingImages(data.images.uploaded);
processedImages = { ...data.images, uploaded: uploadedImages };
} catch (error) {
console.error('Failed to upload images:', error);
throw new Error('Failed to upload images. Please check your connection and try again.');
} catch (error: unknown) {
const errorMessage = getErrorMessage(error);
logger.error('Company image upload failed', {
action: 'manufacturer_creation',
error: errorMessage
});
throw new Error(`Failed to upload images: ${errorMessage}`);
}
}
@@ -698,9 +731,14 @@ export async function submitManufacturerUpdate(
try {
const uploadedImages = await uploadPendingImages(data.images.uploaded);
processedImages = { ...data.images, uploaded: uploadedImages };
} catch (error) {
console.error('Failed to upload images:', error);
throw new Error('Failed to upload images. Please check your connection and try again.');
} catch (error: unknown) {
const errorMessage = getErrorMessage(error);
logger.error('Company image upload failed', {
action: 'manufacturer_update',
companyId,
error: errorMessage
});
throw new Error(`Failed to upload images: ${errorMessage}`);
}
}
@@ -748,9 +786,13 @@ export async function submitDesignerCreation(
try {
const uploadedImages = await uploadPendingImages(data.images.uploaded);
processedImages = { ...data.images, uploaded: uploadedImages };
} catch (error) {
console.error('Failed to upload images:', error);
throw new Error('Failed to upload images. Please check your connection and try again.');
} catch (error: unknown) {
const errorMessage = getErrorMessage(error);
logger.error('Company image upload failed', {
action: 'designer_creation',
error: errorMessage
});
throw new Error(`Failed to upload images: ${errorMessage}`);
}
}
@@ -806,9 +848,14 @@ export async function submitDesignerUpdate(
try {
const uploadedImages = await uploadPendingImages(data.images.uploaded);
processedImages = { ...data.images, uploaded: uploadedImages };
} catch (error) {
console.error('Failed to upload images:', error);
throw new Error('Failed to upload images. Please check your connection and try again.');
} catch (error: unknown) {
const errorMessage = getErrorMessage(error);
logger.error('Company image upload failed', {
action: 'designer_update',
companyId,
error: errorMessage
});
throw new Error(`Failed to upload images: ${errorMessage}`);
}
}
@@ -856,9 +903,13 @@ export async function submitOperatorCreation(
try {
const uploadedImages = await uploadPendingImages(data.images.uploaded);
processedImages = { ...data.images, uploaded: uploadedImages };
} catch (error) {
console.error('Failed to upload images:', error);
throw new Error('Failed to upload images. Please check your connection and try again.');
} catch (error: unknown) {
const errorMessage = getErrorMessage(error);
logger.error('Company image upload failed', {
action: 'operator_creation',
error: errorMessage
});
throw new Error(`Failed to upload images: ${errorMessage}`);
}
}
@@ -914,9 +965,14 @@ export async function submitOperatorUpdate(
try {
const uploadedImages = await uploadPendingImages(data.images.uploaded);
processedImages = { ...data.images, uploaded: uploadedImages };
} catch (error) {
console.error('Failed to upload images:', error);
throw new Error('Failed to upload images. Please check your connection and try again.');
} catch (error: unknown) {
const errorMessage = getErrorMessage(error);
logger.error('Company image upload failed', {
action: 'operator_update',
companyId,
error: errorMessage
});
throw new Error(`Failed to upload images: ${errorMessage}`);
}
}
@@ -964,9 +1020,13 @@ export async function submitPropertyOwnerCreation(
try {
const uploadedImages = await uploadPendingImages(data.images.uploaded);
processedImages = { ...data.images, uploaded: uploadedImages };
} catch (error) {
console.error('Failed to upload images:', error);
throw new Error('Failed to upload images. Please check your connection and try again.');
} catch (error: unknown) {
const errorMessage = getErrorMessage(error);
logger.error('Company image upload failed', {
action: 'property_owner_creation',
error: errorMessage
});
throw new Error(`Failed to upload images: ${errorMessage}`);
}
}
@@ -1022,9 +1082,14 @@ export async function submitPropertyOwnerUpdate(
try {
const uploadedImages = await uploadPendingImages(data.images.uploaded);
processedImages = { ...data.images, uploaded: uploadedImages };
} catch (error) {
console.error('Failed to upload images:', error);
throw new Error('Failed to upload images. Please check your connection and try again.');
} catch (error: unknown) {
const errorMessage = getErrorMessage(error);
logger.error('Company image upload failed', {
action: 'property_owner_update',
companyId,
error: errorMessage
});
throw new Error(`Failed to upload images: ${errorMessage}`);
}
}
@@ -1133,7 +1198,12 @@ export async function submitTimelineEvent(
});
if (error || !submissionId) {
console.error('Failed to create timeline event submission:', error);
const errorMessage = getErrorMessage(error);
logger.error('Timeline event submission failed', {
action: 'create_timeline_event',
userId,
error: errorMessage
});
throw new Error('Failed to submit timeline event for review');
}
@@ -1205,7 +1275,12 @@ export async function submitTimelineEventUpdate(
);
if (rpcError || !result) {
console.error('Failed to create timeline event update:', rpcError);
const errorMessage = getErrorMessage(rpcError);
logger.error('Timeline event update failed', {
action: 'update_timeline_event',
eventId,
error: errorMessage
});
throw new Error('Failed to submit timeline event update');
}
@@ -1233,7 +1308,12 @@ export async function deleteTimelineEvent(
.single();
if (fetchError) {
console.error('Error fetching timeline event:', fetchError);
const errorMessage = getErrorMessage(fetchError);
logger.error('Timeline event fetch failed', {
action: 'delete_timeline_event',
eventId,
error: errorMessage
});
throw new Error('Timeline event not found');
}
@@ -1257,9 +1337,18 @@ export async function deleteTimelineEvent(
.eq('id', eventId);
if (deleteError) {
console.error('Error deleting timeline event:', deleteError);
const errorMessage = getErrorMessage(deleteError);
logger.error('Timeline event deletion failed', {
action: 'delete_timeline_event',
eventId,
error: errorMessage
});
throw new Error('Failed to delete timeline event');
}
console.log('Timeline event deleted:', eventId);
logger.info('Timeline event deleted', {
action: 'delete_timeline_event',
eventId,
userId
});
}