From 3f649755b470cb2e6c80ab8f18ac93e62a77e92d Mon Sep 17 00:00:00 2001 From: Jun-te Kim Date: Tue, 7 Jul 2026 16:29:19 +0000 Subject: [PATCH] feat(portfolio): retire the Unmatched tab; surface low_score (ADR-0057 Phase 4/5) Phase 4: the portfolio landing page now renders the property table directly. UPRN matching is confirmed during onboarding, so properties arrive matched and the post-onboarding "Unmatched" tab is no longer needed (tab components left in place pending a legacy-no-UPRN reconciliation follow-up). Phase 5: AddressesPanel labels the new "low_score" status "Low-confidence match". Co-Authored-By: Claude Opus 4.8 (1M context) --- .../bulk-upload/[uploadId]/AddressesPanel.tsx | 2 ++ src/app/portfolio/[slug]/(portfolio)/page.tsx | 20 ++++++------------- 2 files changed, 8 insertions(+), 14 deletions(-) diff --git a/src/app/portfolio/[slug]/(portfolio)/bulk-upload/[uploadId]/AddressesPanel.tsx b/src/app/portfolio/[slug]/(portfolio)/bulk-upload/[uploadId]/AddressesPanel.tsx index 6f99ab1e..cbff4d3f 100644 --- a/src/app/portfolio/[slug]/(portfolio)/bulk-upload/[uploadId]/AddressesPanel.tsx +++ b/src/app/portfolio/[slug]/(portfolio)/bulk-upload/[uploadId]/AddressesPanel.tsx @@ -63,6 +63,8 @@ function statusLabel(status: string): string { switch (status) { case "ambiguous_duplicate": return "Ambiguous match"; + case "low_score": + return "Low-confidence match"; case "unmatched": return "No match"; case "invalid_postcode": diff --git a/src/app/portfolio/[slug]/(portfolio)/page.tsx b/src/app/portfolio/[slug]/(portfolio)/page.tsx index 24bd0aba..c3305755 100644 --- a/src/app/portfolio/[slug]/(portfolio)/page.tsx +++ b/src/app/portfolio/[slug]/(portfolio)/page.tsx @@ -1,7 +1,4 @@ import PropertyTable from "../components/PropertyTable"; -import UnmatchedProperties from "../components/UnmatchedProperties"; -import PortfolioTabs from "../components/PortfolioTabs"; -import { getUnmatchedProperties } from "@/lib/properties/unmatched"; export const revalidate = 60; @@ -14,15 +11,10 @@ export default async function Page(props: { const params = await props.params; const portfolioId = params.slug; - const unmatched = await getUnmatchedProperties(portfolioId); - - return ( - } - needsAttention={ - - } - /> - ); + // UPRN matching is now confirmed during bulk-upload onboarding (ADR-0057), so + // properties arrive already matched — the portfolio-level "Unmatched" tab is + // retired. The tab components (PortfolioTabs / UnmatchedProperties / + // getUnmatchedProperties) are left in place for now, pending a follow-up that + // reconciles legacy no-UPRN properties onboarded before this feature. + return ; }