Refactor supplier analysis and product handling
- Updated `SupplierAnalysisResult` to include a `product` field and modified related tests. - Refactored `addRowsSheet` to accommodate changes in the product structure. - Enhanced UPC file analysis to utilize a new `toSupplierInputRecord` function for cleaner record creation. - Introduced new types for supplier input records and product observations. - Updated frontend components to handle new product details and analysis history. - Improved database writing functions to streamline run completion and error handling. - Added new API endpoints for product details and adjusted routing in the frontend.
This commit is contained in:
58
src/types.ts
58
src/types.ts
@@ -58,7 +58,8 @@ export interface KeepaUpcLookupDetail {
|
||||
status: KeepaUpcLookupStatus;
|
||||
asin: string | null;
|
||||
candidateAsins: string[];
|
||||
keepaData: KeepaData | null;
|
||||
keepaData: KeepaData | null;
|
||||
provider?: "sp_api" | "keepa";
|
||||
reason?: string;
|
||||
}
|
||||
|
||||
@@ -114,13 +115,66 @@ export interface SupplierScore {
|
||||
export interface SupplierAnalysisResult {
|
||||
upc: string;
|
||||
rowNumber?: number;
|
||||
record: ProductRecord;
|
||||
record: SupplierInputRecord;
|
||||
product: ProductRecord | null;
|
||||
lookup: UpcLookupDetail;
|
||||
keepa: KeepaData | null;
|
||||
spApi: SpApiData | null;
|
||||
score: SupplierScore;
|
||||
fetchedAt: string;
|
||||
}
|
||||
|
||||
export interface SupplierInputRecord {
|
||||
name: string;
|
||||
unitCost: number;
|
||||
brand?: string;
|
||||
category?: string;
|
||||
}
|
||||
|
||||
export interface Product {
|
||||
asin: string;
|
||||
name: string | null;
|
||||
brand: string | null;
|
||||
category: string | null;
|
||||
firstSeenAt: string;
|
||||
lastSeenAt: string;
|
||||
}
|
||||
|
||||
export interface ProductObservation {
|
||||
id: number;
|
||||
productAsin: string;
|
||||
runId: number;
|
||||
source: string;
|
||||
fetchedAt: string;
|
||||
}
|
||||
|
||||
export interface Run {
|
||||
id: number;
|
||||
type:
|
||||
| "lead_analysis"
|
||||
| "category_analysis"
|
||||
| "supplier_upc"
|
||||
| "stalker"
|
||||
| "stalker_analysis";
|
||||
parentRunId?: number | null;
|
||||
status: string;
|
||||
}
|
||||
|
||||
export interface RunItem {
|
||||
id: number;
|
||||
runId: number;
|
||||
productAsin: string | null;
|
||||
sourceRow?: number | null;
|
||||
}
|
||||
|
||||
export interface AnalysisRevision {
|
||||
id: number;
|
||||
runItemId: number;
|
||||
decision: "FBA" | "FBM" | "BUY" | "WATCH" | "SKIP";
|
||||
confidence: number | null;
|
||||
reasoning: string | null;
|
||||
analyzedAt: string;
|
||||
}
|
||||
|
||||
export interface CategoryRunSummaryDb {
|
||||
categoryId: number;
|
||||
|
||||
Reference in New Issue
Block a user