70 lines
1.4 KiB
TypeScript
70 lines
1.4 KiB
TypeScript
export interface ProductRecord {
|
|
asin: string;
|
|
name: string;
|
|
unitCost: number;
|
|
brand?: string;
|
|
category?: string;
|
|
amazonRank?: number;
|
|
avgPrice90FromSheet?: number;
|
|
sellingPriceFromSheet?: number;
|
|
fbaNet?: number;
|
|
grossProfit?: number;
|
|
grossProfitPct?: number;
|
|
netProfitFromSheet?: number;
|
|
roiFromSheet?: number;
|
|
moq?: number;
|
|
moqCost?: number;
|
|
totalQtyAvail?: number;
|
|
|
|
link?: string;
|
|
asinLink?: string;
|
|
sourceUrl?: string;
|
|
supplier?: string;
|
|
promoCouponCode?: string;
|
|
notes?: string;
|
|
leadDate?: string;
|
|
[key: string]: unknown;
|
|
}
|
|
|
|
export interface KeepaData {
|
|
currentPrice: number | null;
|
|
avgPrice90: number | null;
|
|
minPrice90: number | null;
|
|
maxPrice90: number | null;
|
|
salesRank: number | null;
|
|
salesRankAvg90: number | null;
|
|
salesRankDrops30: number | null;
|
|
salesRankDrops90: number | null;
|
|
sellerCount: number | null;
|
|
buyBoxSeller: string | null;
|
|
buyBoxPrice: number | null;
|
|
monthlySold: number | null;
|
|
categoryTree: string[];
|
|
}
|
|
|
|
export interface SpApiData {
|
|
fbaFee: number;
|
|
fbmFee: number;
|
|
referralFeePercent: number;
|
|
estimatedSalePrice: number;
|
|
}
|
|
|
|
export interface EnrichedProduct {
|
|
record: ProductRecord;
|
|
keepa: KeepaData | null;
|
|
spApi: SpApiData;
|
|
fetchedAt: string;
|
|
}
|
|
|
|
export interface LlmVerdict {
|
|
asin: string;
|
|
verdict: "FBA" | "FBM" | "SKIP";
|
|
confidence: number;
|
|
reasoning: string;
|
|
}
|
|
|
|
export interface AnalysisResult {
|
|
product: EnrichedProduct;
|
|
verdict: LlmVerdict;
|
|
}
|