feat: Implement all 7 phases

This commit is contained in:
gpt-engineer-app[bot]
2025-11-02 21:00:22 +00:00
parent bccaebc6d6
commit f3c898dfc1
12 changed files with 1236 additions and 42 deletions

View File

@@ -5,6 +5,119 @@
* Extracted from ModerationQueue.tsx to improve maintainability and reusability.
*/
/**
* Photo display interface for moderation queue
*/
export interface PhotoForDisplay {
id: string;
url: string;
cloudflare_image_url: string;
filename: string;
caption?: string | null;
title?: string | null;
date_taken?: string | null;
order_index: number;
}
/**
* Location data interface
*/
export interface LocationData {
id: string;
city?: string | null;
state_province?: string | null;
country: string;
formatted_address?: string | null;
}
/**
* Park submission item data
*/
export interface ParkItemData {
park_id?: string;
name: string;
slug: string;
description?: string;
park_type: string;
status: string;
location_id?: string;
operator_id?: string;
property_owner_id?: string;
opening_date?: string;
closing_date?: string;
source_url?: string;
submission_notes?: string;
}
/**
* Ride submission item data
*/
export interface RideItemData {
ride_id?: string;
name: string;
slug: string;
park_id: string;
manufacturer_id?: string;
designer_id?: string;
model_id?: string;
ride_type: string;
status: string;
opening_date?: string;
closing_date?: string;
source_url?: string;
submission_notes?: string;
}
/**
* Company submission item data
*/
export interface CompanyItemData {
company_id?: string;
name: string;
slug: string;
company_type: string;
country?: string;
founded_year?: number;
source_url?: string;
submission_notes?: string;
}
/**
* Ride model submission item data
*/
export interface RideModelItemData {
model_id?: string;
name: string;
slug: string;
manufacturer_id: string;
model_type: string;
source_url?: string;
submission_notes?: string;
}
/**
* Photo submission item data
*/
export interface PhotoItemData {
photo_url: string;
cloudflare_image_id?: string;
caption?: string;
title?: string;
order_index?: number;
source_url?: string;
submission_notes?: string;
}
/**
* Union type for all submission item data
*/
export type SubmissionItemData =
| ParkItemData
| RideItemData
| CompanyItemData
| RideModelItemData
| PhotoItemData;
/**
* Represents a single item in the moderation queue.
* Can be either a review or a content submission.
@@ -79,8 +192,8 @@ export interface ModerationItem {
submission_items?: Array<{
id: string;
item_type: string;
item_data: any;
original_data?: any;
item_data: SubmissionItemData;
original_data?: SubmissionItemData;
status: string;
}>;
}