From cceaafe8559de9a36d8d839aa4ee61f81745b450 Mon Sep 17 00:00:00 2001 From: Jun-te Kim Date: Fri, 14 Nov 2025 11:28:28 +0000 Subject: [PATCH 1/4] added whlg --- src/app/db/schema/whlg.ts | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 src/app/db/schema/whlg.ts diff --git a/src/app/db/schema/whlg.ts b/src/app/db/schema/whlg.ts new file mode 100644 index 00000000..fa881684 --- /dev/null +++ b/src/app/db/schema/whlg.ts @@ -0,0 +1,11 @@ +import { + pgTable, + text, + bigserial, +} from "drizzle-orm/pg-core"; + +export const whlg = pgTable("whlg", { + id: bigserial("id", { mode: "bigint" }).primaryKey(), + postcode: text("postcode").notNull(), +}); + From 757bfe3f8da13ccf97ee2dd4bab1da18db8b3e47 Mon Sep 17 00:00:00 2001 From: Jun-te Kim Date: Fri, 14 Nov 2025 11:30:48 +0000 Subject: [PATCH 2/4] made the drizzle table for whlg --- src/app/db/migrations/meta/_journal.json | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/app/db/migrations/meta/_journal.json b/src/app/db/migrations/meta/_journal.json index eb797050..032da46f 100644 --- a/src/app/db/migrations/meta/_journal.json +++ b/src/app/db/migrations/meta/_journal.json @@ -890,6 +890,13 @@ "when": 1762892339561, "tag": "0126_third_hawkeye", "breakpoints": true + }, + { + "idx": 127, + "version": "7", + "when": 1763119819059, + "tag": "0127_acoustic_sleepwalker", + "breakpoints": true } ] } \ No newline at end of file From fc8373f9eafd6c03e0a451471c7cd6c047ad1f4b Mon Sep 17 00:00:00 2001 From: Khalim Conn-Kowlessar Date: Tue, 25 Nov 2025 11:06:34 +0000 Subject: [PATCH 3/4] fixed scenario re-creationg every time bug --- src/app/api/auth/[...nextauth]/authOptions.ts | 11 +++++---- src/app/api/sign-s3-url/route.ts | 4 +++- src/app/components/portfolio/SummaryBox.tsx | 23 ++++++++----------- src/app/portfolio/[slug]/(portfolio)/page.tsx | 2 -- .../RemoteAssessmentClient.tsx | 4 ++++ .../remote-assessment/ScenarioSetup.tsx | 6 ++++- .../useCreateRemoteAssessment.tsx | 2 ++ 7 files changed, 29 insertions(+), 23 deletions(-) diff --git a/src/app/api/auth/[...nextauth]/authOptions.ts b/src/app/api/auth/[...nextauth]/authOptions.ts index e5a5d691..abcd1868 100644 --- a/src/app/api/auth/[...nextauth]/authOptions.ts +++ b/src/app/api/auth/[...nextauth]/authOptions.ts @@ -252,11 +252,12 @@ export const AuthOptions: NextAuthOptions = { */ async redirect({ url, baseUrl }) { // If the user has not onboarded, send them to onboarding - console.log("Redirect triggered:", { - from: url, - to: `${baseUrl}/home`, - timestamp: new Date().toISOString(), - }); + // This logging is too noisy + // console.log("Redirect triggered:", { + // from: url, + // to: `${baseUrl}/home`, + // timestamp: new Date().toISOString(), + // }); return `${baseUrl}/home`; }, }, diff --git a/src/app/api/sign-s3-url/route.ts b/src/app/api/sign-s3-url/route.ts index 06ed4e7a..8d8c248e 100644 --- a/src/app/api/sign-s3-url/route.ts +++ b/src/app/api/sign-s3-url/route.ts @@ -14,7 +14,9 @@ const s3 = new S3Client({ export async function POST(req: Request) { try { const { key } = await req.json(); // key = "path/to/photo.jpg" - if (!key) return NextResponse.json({ error: "Missing key" }, { status: 400 }); + console.log("Received key for signing:", key); + if (!key) + return NextResponse.json({ error: "Missing key" }, { status: 400 }); const command = new GetObjectCommand({ Bucket: process.env.RETROFIT_DATA_DEV_S3_BUCKET_NAME!, diff --git a/src/app/components/portfolio/SummaryBox.tsx b/src/app/components/portfolio/SummaryBox.tsx index 4a094ff1..f6cec1f5 100644 --- a/src/app/components/portfolio/SummaryBox.tsx +++ b/src/app/components/portfolio/SummaryBox.tsx @@ -2,7 +2,6 @@ import { useState } from "react"; import { formatNumber } from "@/app/utils"; - interface SummaryBoxProps { scenarios: Array<{ id: bigint; @@ -26,6 +25,8 @@ function SummaryBox({ scenarios, numProperties }: SummaryBoxProps) { const defaultScenario = scenarios.find((scenario) => scenario.isDefault) || scenarios[0]; + console.log("scenarios", scenarios); + const [selectedScenarioId, setSelectedScenarioId] = useState( Number(defaultScenario.id) ); @@ -36,11 +37,11 @@ function SummaryBox({ scenarios, numProperties }: SummaryBoxProps) { const [totalCostFormatted, setTotalCostFormatted] = useState( formatMoney(defaultScenario.totalCost) ); - const [funding, setFunding] = useState( - formatMoney(defaultScenario.funding) - ); + const [funding, setFunding] = useState(formatMoney(defaultScenario.funding)); const [netCost, setNetCost] = useState( - formatMoney((defaultScenario.totalCost || 0) - (defaultScenario.funding || 0)) + formatMoney( + (defaultScenario.totalCost || 0) - (defaultScenario.funding || 0) + ) ); const [contingency, setContingency] = useState( formatMoney(defaultScenario.contingency) @@ -149,21 +150,15 @@ function SummaryBox({ scenarios, numProperties }: SummaryBoxProps) { Funding - - {funding} - + {funding} Cost after funding - - {netCost} - + {netCost} Contingency - - {contingency} - + {contingency} Total properties diff --git a/src/app/portfolio/[slug]/(portfolio)/page.tsx b/src/app/portfolio/[slug]/(portfolio)/page.tsx index 691693ef..d6722c6f 100644 --- a/src/app/portfolio/[slug]/(portfolio)/page.tsx +++ b/src/app/portfolio/[slug]/(portfolio)/page.tsx @@ -3,9 +3,7 @@ import { getPortfolio, getPortfolioPerformance, getProperties } from "../utils"; import DataTable from "@/app/portfolio/[slug]/components/propertyTable"; import { columns } from "@/app/portfolio/[slug]/components/propertyTableColumns"; import { PropertyWithRelations } from "@/app/db/schema/property"; -import { formatNumber, convertDaysToWorkingWeeks } from "@/app/utils"; import SummaryBox from "@/app/components/portfolio/SummaryBox"; -import { is } from "cypress/types/bluebird"; // We enfore caching of data for 60 seconds export const revalidate = 60; diff --git a/src/app/portfolio/[slug]/remote-assessment/RemoteAssessmentClient.tsx b/src/app/portfolio/[slug]/remote-assessment/RemoteAssessmentClient.tsx index e2552bc4..becca487 100644 --- a/src/app/portfolio/[slug]/remote-assessment/RemoteAssessmentClient.tsx +++ b/src/app/portfolio/[slug]/remote-assessment/RemoteAssessmentClient.tsx @@ -26,6 +26,7 @@ export default function RemoteAssessmentClient({ builtForm?: string; } | null>(null); const [selectedPostcode, setSelectedPostcode] = useState(""); + const [selectedScenario, setSelectedScenario] = useState(null); const { handleSubmit: submitAssessment, isUploading } = useCreateRemoteAssessment({ @@ -37,6 +38,7 @@ export default function RemoteAssessmentClient({ propertyType: selectedAddress?.propertyType || null, builtForm: selectedAddress?.builtForm || null, measures: measuresList, + scenarioId: selectedScenario, }); async function onSubmitRemoteAssessment(values: RemoteAssessmentFormValues) { @@ -150,6 +152,8 @@ export default function RemoteAssessmentClient({ selectedBuiltForm={selectedAddress?.builtForm ?? null} isSubmitting={isUploading} onSubmitRemoteAssessment={onSubmitRemoteAssessment} + setSelectedScenario={setSelectedScenario} + selectedScenario={selectedScenario} /> diff --git a/src/app/portfolio/[slug]/remote-assessment/ScenarioSetup.tsx b/src/app/portfolio/[slug]/remote-assessment/ScenarioSetup.tsx index 7afb2289..3c2c2e54 100644 --- a/src/app/portfolio/[slug]/remote-assessment/ScenarioSetup.tsx +++ b/src/app/portfolio/[slug]/remote-assessment/ScenarioSetup.tsx @@ -48,6 +48,8 @@ export default function ScenarioSetup({ selectedBuiltForm, isSubmitting, onSubmitRemoteAssessment, + setSelectedScenario, + selectedScenario, }: { portfolioId: string; scenarios: ScenarioSelect[]; @@ -59,9 +61,11 @@ export default function ScenarioSetup({ selectedBuiltForm: string | null; isSubmitting: boolean; onSubmitRemoteAssessment: (values: RemoteAssessmentFormValues) => void; + setSelectedScenario: (scenarioId: string | null) => void; + selectedScenario: string | null; }) { const NEW_SENTINEL = "__new__"; - const [selectedScenario, setSelectedScenario] = useState(null); + const [showMeasures, setShowMeasures] = useState(false); const form = useForm({ diff --git a/src/app/portfolio/[slug]/remote-assessment/useCreateRemoteAssessment.tsx b/src/app/portfolio/[slug]/remote-assessment/useCreateRemoteAssessment.tsx index 2db416d7..1e927d2d 100644 --- a/src/app/portfolio/[slug]/remote-assessment/useCreateRemoteAssessment.tsx +++ b/src/app/portfolio/[slug]/remote-assessment/useCreateRemoteAssessment.tsx @@ -186,6 +186,8 @@ function useCreateRemoteAssessment({ event_type: "remote_assessment", }; + console.log("Triggering engine with body:", triggerBody); + const response = await fetch("/api/plan/trigger", { method: "POST", headers: { "Content-Type": "application/json" }, From 5dd21d89c469bf2116d4bfe98b479c94512c8885 Mon Sep 17 00:00:00 2001 From: Khalim Conn-Kowlessar Date: Tue, 25 Nov 2025 11:08:38 +0000 Subject: [PATCH 4/4] removed some unnecessary logging --- src/app/api/sign-s3-url/route.ts | 1 - src/app/components/portfolio/SummaryBox.tsx | 2 -- .../[slug]/remote-assessment/useCreateRemoteAssessment.tsx | 2 -- 3 files changed, 5 deletions(-) diff --git a/src/app/api/sign-s3-url/route.ts b/src/app/api/sign-s3-url/route.ts index 8d8c248e..3b0714df 100644 --- a/src/app/api/sign-s3-url/route.ts +++ b/src/app/api/sign-s3-url/route.ts @@ -14,7 +14,6 @@ const s3 = new S3Client({ export async function POST(req: Request) { try { const { key } = await req.json(); // key = "path/to/photo.jpg" - console.log("Received key for signing:", key); if (!key) return NextResponse.json({ error: "Missing key" }, { status: 400 }); diff --git a/src/app/components/portfolio/SummaryBox.tsx b/src/app/components/portfolio/SummaryBox.tsx index f6cec1f5..98df6798 100644 --- a/src/app/components/portfolio/SummaryBox.tsx +++ b/src/app/components/portfolio/SummaryBox.tsx @@ -25,8 +25,6 @@ function SummaryBox({ scenarios, numProperties }: SummaryBoxProps) { const defaultScenario = scenarios.find((scenario) => scenario.isDefault) || scenarios[0]; - console.log("scenarios", scenarios); - const [selectedScenarioId, setSelectedScenarioId] = useState( Number(defaultScenario.id) ); diff --git a/src/app/portfolio/[slug]/remote-assessment/useCreateRemoteAssessment.tsx b/src/app/portfolio/[slug]/remote-assessment/useCreateRemoteAssessment.tsx index 1e927d2d..2db416d7 100644 --- a/src/app/portfolio/[slug]/remote-assessment/useCreateRemoteAssessment.tsx +++ b/src/app/portfolio/[slug]/remote-assessment/useCreateRemoteAssessment.tsx @@ -186,8 +186,6 @@ function useCreateRemoteAssessment({ event_type: "remote_assessment", }; - console.log("Triggering engine with body:", triggerBody); - const response = await fetch("/api/plan/trigger", { method: "POST", headers: { "Content-Type": "application/json" },