diff --git a/src/app/api/plan/trigger/route.ts b/src/app/api/plan/trigger/route.ts index f2ac487..1e810f0 100644 --- a/src/app/api/plan/trigger/route.ts +++ b/src/app/api/plan/trigger/route.ts @@ -20,6 +20,8 @@ const PresignedUrlBodySchema = z.object({ // optional scenario_id to link the plan to an existing scenario scenario_id: z.string().optional().nullable(), file_type: z.enum(["csv", "xlsx"]).optional(), // Specify the file type + file_format: z.enum(["domna_asset_list"]).optional().nullable(), // Specify the file format + sheet_name: z.string().optional().nullable(), // Specify the sheet name if applicable }); export async function POST(request: NextRequest) { @@ -27,7 +29,6 @@ export async function POST(request: NextRequest) { console.log("Triggering plan build"); const body = await request.json(); - console.log("Unvalidated body: ", body); let validatedBody; try { diff --git a/src/app/api/upload/validate/route.ts b/src/app/api/upload/validate/route.ts index 8f3526e..3b3b0e0 100644 --- a/src/app/api/upload/validate/route.ts +++ b/src/app/api/upload/validate/route.ts @@ -75,5 +75,6 @@ export async function POST(req: NextRequest) { isStandardised, file_type: fileType, ...(fileType === "xlsx" && isStandardised ? { sheetNames } : {}), + fileFormat: isStandardised ? "domna_asset_list" : null, }); } diff --git a/src/app/portfolio/[slug]/components/UploadCsvModal.tsx b/src/app/portfolio/[slug]/components/UploadCsvModal.tsx index bf11fdb..c7ad608 100644 --- a/src/app/portfolio/[slug]/components/UploadCsvModal.tsx +++ b/src/app/portfolio/[slug]/components/UploadCsvModal.tsx @@ -108,6 +108,7 @@ export function useUploadCsvPlan({ measures, onSuccessRedirect, fileType, + fileFormat, }: { file: File; portfolioId: string; @@ -121,6 +122,7 @@ export function useUploadCsvPlan({ measures: (typeof measuresList)[number][]; onSuccessRedirect: (path: string) => void; fileType: "csv" | "xlsx"; + fileFormat: "domna_asset_list" | null; }) { const session = useSession(); const userId = String(session.data?.user.dbId); @@ -161,6 +163,7 @@ export function useUploadCsvPlan({ sheet_name: selectedSheet, ashp_cop: ashpCop, file_type: fileType, // Pass the file type for backend processing + file_format: fileFormat, }; const triggerRes = await fetch("/api/plan/trigger", { @@ -219,6 +222,7 @@ export default function UploadCsvModal({ const [selectedScenario, setSelectedScenario] = useState(null); const [showMeasures, setShowMeasures] = useState(false); const [fileType, setFileType] = useState<"csv" | "xlsx">("csv"); + const [fileFormat, setFileFormat] = useState<"domna_asset_list" | null>(null); const scenarioOptions = useMemo( () => @@ -251,6 +255,7 @@ export default function UploadCsvModal({ setSelectedSheet(""); } setFileType(data.file_type); // capture file type + setFileFormat(data.fileFormat || null); }, onError: () => { setSheetNames([]); @@ -292,6 +297,7 @@ export default function UploadCsvModal({ scenarioName: form.watch("scenario"), measures: form.watch("measures"), fileType: fileType, + fileFormat: fileFormat, portfolioId, selectedSheet, onSuccessRedirect: (path) => router.push(path),