feat: initial commit

This commit is contained in:
2026-03-05 22:12:38 +01:00
commit bce762a783
380 changed files with 51955 additions and 0 deletions
+102
View File
@@ -0,0 +1,102 @@
import api from './client'
import type { OrderDetail } from './orders'
export interface ExcelPreviewRow {
row_index: number
pim_id: string | null
produkt_baureihe: string | null
gewaehltes_produkt: string | null
product_exists: boolean
product_id: string | null
medias_rendering: boolean | null
category_key: string | null
has_step: boolean
is_duplicate: boolean
duplicate_of_row: number | null
}
export interface ExcelPreviewResult {
excel_path: string
filename: string
category_key: string | null
row_count: number
existing_product_count: number
new_product_count: number
no_pim_id_count: number
has_step_count: number
no_step_count: number
duplicate_count: number
warnings: string[]
rows: ExcelPreviewRow[]
column_headers: string[]
template_name: string | null
}
export interface ParsedComponent {
part_name: string | null
material: string | null
component_type: string | null
column_index: number
}
export interface ParsedRow {
row_index: number
ebene1: string | null
ebene2: string | null
baureihe: string | null
pim_id: string | null
produkt_baureihe: string | null
gewaehltes_produkt: string | null
name_cad_modell: string | null
gewuenschte_bildnummer: string | null
lagertyp: string | null
medias_rendering: boolean | null
components: ParsedComponent[]
}
export interface ParsedExcelResponse {
filename: string
excel_path?: string
category_key: string | null
template_name: string | null
row_count: number
column_headers: string[]
rows: ParsedRow[]
warnings: string[]
}
export interface OutputTypeSelection {
row_index: number
output_type_ids: string[]
}
export interface ExcelFinalizeRequest {
excel_path: string
included_row_indices: number[]
output_type_selections: OutputTypeSelection[]
notes?: string | null
template_id?: string | null
}
export async function uploadExcel(file: File): Promise<ExcelPreviewResult> {
const form = new FormData()
form.append('file', file)
const res = await api.post<ExcelPreviewResult>('/uploads/excel', form, {
headers: { 'Content-Type': 'multipart/form-data' },
})
return res.data
}
export async function finalizeExcelImport(data: ExcelFinalizeRequest): Promise<OrderDetail> {
const res = await api.post<OrderDetail>('/uploads/excel/finalize', data)
return res.data
}
export async function uploadStep(file: File) {
const form = new FormData()
form.append('file', file)
const res = await api.post('/uploads/step', form, {
headers: { 'Content-Type': 'multipart/form-data' },
})
return res.data
}