diff --git a/src/server.ts b/src/server.ts index 76917b2..adc708f 100644 --- a/src/server.ts +++ b/src/server.ts @@ -150,6 +150,7 @@ function parseResultFilters( const sellabilityStatus = filters.get("sellabilityStatus")?.trim(); const minConfidence = filters.get("minConfidence")?.trim(); const maxConfidence = filters.get("maxConfidence")?.trim(); + const amazonIsSeller = filters.get("amazonIsSeller")?.trim(); const conditions: string[] = ["run_id = ?"]; const params: Array = [runId]; @@ -174,6 +175,12 @@ function parseResultFilters( params.push(Number(maxConfidence)); } + if (amazonIsSeller === "yes") { + conditions.push("amazon_is_seller = 1"); + } else if (amazonIsSeller === "no") { + conditions.push("amazon_is_seller = 0"); + } + if (q) { const wildcard = `%${q}%`; if (processType === "lead_analysis") { @@ -310,6 +317,7 @@ function getRuns(filters: URLSearchParams) { function getProductList(filters: URLSearchParams) { const q = filters.get("q")?.trim() || ""; const verdict = filters.get("verdict")?.trim(); + const amazonIsSeller = filters.get("amazonIsSeller")?.trim(); const page = parseIntParam(filters.get("page"), 1); const pageSize = Math.min( parseIntParam(filters.get("pageSize"), DEFAULT_PAGE_SIZE), @@ -325,6 +333,12 @@ function getProductList(filters: URLSearchParams) { params.push(verdict); } + if (amazonIsSeller === "yes") { + conditions.push("amazon_is_seller = 1"); + } else if (amazonIsSeller === "no") { + conditions.push("amazon_is_seller = 0"); + } + if (q) { const wildcard = `%${q}%`; conditions.push( diff --git a/src/web/frontend.tsx b/src/web/frontend.tsx index e54d2e8..17a6df7 100644 --- a/src/web/frontend.tsx +++ b/src/web/frontend.tsx @@ -78,6 +78,7 @@ type ResultsResponse = { }; type VerdictFilter = "" | "FBA" | "FBM" | "SKIP"; +type AmazonSellerFilter = "" | "yes" | "no"; type ProductListItem = { processType: ProcessType; @@ -429,6 +430,8 @@ function RunDetails({ const [search, setSearch] = useState(""); const [verdict, setVerdict] = useState(""); const [sellabilityStatus, setSellabilityStatus] = useState(""); + const [amazonSellerFilter, setAmazonSellerFilter] = + useState(""); const [minConfidence, setMinConfidence] = useState(""); const [maxConfidence, setMaxConfidence] = useState(""); const [page, setPage] = useState(1); @@ -469,6 +472,7 @@ function RunDetails({ if (search) params.set("q", search); if (verdict) params.set("verdict", verdict); if (sellabilityStatus) params.set("sellabilityStatus", sellabilityStatus); + if (amazonSellerFilter) params.set("amazonIsSeller", amazonSellerFilter); if (minConfidence) params.set("minConfidence", minConfidence); if (maxConfidence) params.set("maxConfidence", maxConfidence); @@ -484,7 +488,7 @@ function RunDetails({ return () => { cancelled = true; }; - }, [processType, runId, search, verdict, sellabilityStatus, minConfidence, maxConfidence, page, pageSize, sort, refreshTick]); + }, [processType, runId, search, verdict, sellabilityStatus, amazonSellerFilter, minConfidence, maxConfidence, page, pageSize, sort, refreshTick]); useEffect(() => { const interval = window.setInterval(() => { @@ -555,6 +559,17 @@ function RunDetails({ + { setPage(1); setMinConfidence(e.target.value); }} placeholder="Min confidence" /> { setPage(1); setMaxConfidence(e.target.value); }} placeholder="Max confidence" /> +