Initial commit: AutonetSellCar platform with deployment system
- Frontend: Next.js 14 with TypeScript - Backend: FastAPI with SQLAlchemy - Agent: Carmodoo sync agent - Deployment: Docker Compose based staging/production setup - Scripts: Automated deployment with rollback support 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
165
frontend/src/types/index.ts
Normal file
165
frontend/src/types/index.ts
Normal file
@@ -0,0 +1,165 @@
|
||||
export interface CarMaker {
|
||||
id: number;
|
||||
code: string;
|
||||
name: string;
|
||||
name_en?: string;
|
||||
}
|
||||
|
||||
export interface CarModel {
|
||||
id: number;
|
||||
code: string;
|
||||
maker_id: number;
|
||||
name: string;
|
||||
name_en?: string;
|
||||
}
|
||||
|
||||
export interface CarImage {
|
||||
id: number;
|
||||
url?: string;
|
||||
local_path?: string;
|
||||
is_main: boolean;
|
||||
sort_order: number;
|
||||
}
|
||||
|
||||
export interface Car {
|
||||
id: number;
|
||||
source: string;
|
||||
source_id: string;
|
||||
car_name?: string;
|
||||
year?: number;
|
||||
month?: number;
|
||||
mileage?: number;
|
||||
price_krw?: number;
|
||||
margin_krw?: number;
|
||||
final_price_krw?: number;
|
||||
price_usd?: number;
|
||||
is_displayed?: boolean;
|
||||
fuel?: string;
|
||||
transmission?: string;
|
||||
color?: string;
|
||||
displacement?: number;
|
||||
car_number?: string;
|
||||
seize_count: number;
|
||||
collateral_count: number;
|
||||
check_num?: string;
|
||||
dealer_name?: string;
|
||||
dealer_description?: string;
|
||||
dealer_description_en?: string;
|
||||
dealer_description_mn?: string;
|
||||
dealer_description_ru?: string;
|
||||
status: string;
|
||||
created_at: string;
|
||||
updated_at: string;
|
||||
maker?: CarMaker;
|
||||
model?: CarModel;
|
||||
images: CarImage[];
|
||||
specification?: CarSpecification;
|
||||
}
|
||||
|
||||
export interface CarSpecification {
|
||||
id: number;
|
||||
car_id: number;
|
||||
manufacturer?: string;
|
||||
model_name?: string;
|
||||
grade?: string;
|
||||
model_year?: string;
|
||||
fuel_type?: string;
|
||||
transmission?: string;
|
||||
drive_type?: string;
|
||||
max_power?: string;
|
||||
max_torque?: string;
|
||||
fuel_efficiency?: string;
|
||||
body_type?: string;
|
||||
door_count?: number;
|
||||
seating_capacity?: number;
|
||||
length?: number;
|
||||
width?: number;
|
||||
height?: number;
|
||||
wheelbase?: number;
|
||||
curb_weight?: number;
|
||||
displacement?: number;
|
||||
safety_options?: string[];
|
||||
comfort_options?: string[];
|
||||
exterior_options?: string[];
|
||||
interior_options?: string[];
|
||||
raw_data?: Record<string, unknown>;
|
||||
}
|
||||
|
||||
export interface CarListResponse {
|
||||
total: number;
|
||||
page: number;
|
||||
page_size: number;
|
||||
cars: Car[];
|
||||
}
|
||||
|
||||
export interface User {
|
||||
id: number;
|
||||
email: string;
|
||||
name?: string;
|
||||
phone?: string;
|
||||
country: string;
|
||||
is_active: boolean;
|
||||
is_admin: boolean;
|
||||
is_dealer: boolean;
|
||||
cc_balance: number;
|
||||
referral_code?: string;
|
||||
email_verified: boolean;
|
||||
phone_verified: boolean;
|
||||
created_at: string;
|
||||
}
|
||||
|
||||
export interface CarView {
|
||||
id: number;
|
||||
user_id: number;
|
||||
car_id: number;
|
||||
cc_paid: number;
|
||||
created_at: string;
|
||||
}
|
||||
|
||||
export interface SearchFilters {
|
||||
maker_id?: number;
|
||||
model_id?: number;
|
||||
year_min?: number;
|
||||
year_max?: number;
|
||||
price_min?: number;
|
||||
price_max?: number;
|
||||
mileage_max?: number;
|
||||
fuel?: string;
|
||||
}
|
||||
|
||||
// Hero Banner Types
|
||||
export interface HeroBanner {
|
||||
id: number;
|
||||
// 다국어 제목 (Admin API 응답)
|
||||
title_ko?: string;
|
||||
title_en?: string;
|
||||
title_mn?: string;
|
||||
// 다국어 서브타이틀 (Admin API 응답)
|
||||
subtitle_ko?: string;
|
||||
subtitle_en?: string;
|
||||
subtitle_mn?: string;
|
||||
// 로컬라이즈된 필드 (Public API 응답)
|
||||
title?: string;
|
||||
subtitle?: string;
|
||||
// 이미지 및 링크
|
||||
image_url: string;
|
||||
link_url?: string;
|
||||
car_id?: number | null;
|
||||
// 상태
|
||||
is_active?: boolean;
|
||||
display_order?: number;
|
||||
// 타임스탬프
|
||||
created_at?: string;
|
||||
updated_at?: string;
|
||||
// 관계
|
||||
car?: Car;
|
||||
}
|
||||
|
||||
export interface HeroBannerSettings {
|
||||
id: number;
|
||||
slide_interval: number;
|
||||
animation_type: string;
|
||||
image_width: number;
|
||||
image_height: number;
|
||||
auto_play: boolean;
|
||||
}
|
||||
Reference in New Issue
Block a user