diff --git a/web-client/src/components/ui/switch.tsx b/web-client/src/components/ui/switch.tsx new file mode 100644 index 00000000..51edbdce --- /dev/null +++ b/web-client/src/components/ui/switch.tsx @@ -0,0 +1,31 @@ +import * as React from "react" +import { Switch as SwitchPrimitive } from "radix-ui" + +import { cn } from "@/lib/utils" + +function Switch({ + className, + size = "default", + ...props +}: React.ComponentProps & { + size?: "sm" | "default" +}) { + return ( + + + + ) +} + +export { Switch } diff --git a/web-client/src/features/helper/api/queries.ts b/web-client/src/features/helper/api/queries.ts index c9215ffa..e73d453a 100644 --- a/web-client/src/features/helper/api/queries.ts +++ b/web-client/src/features/helper/api/queries.ts @@ -22,8 +22,9 @@ export function useHelperHello() { export function useGenerateMemberReport(memberId: string) { const qc = useQueryClient() - return useMutation({ - mutationFn: () => helperClient.post(`/reports/member/${memberId}`).then(() => undefined), + return useMutation({ + mutationFn: (useLocal) => + helperClient.post(`/reports/member/${memberId}`, { uselocal: useLocal }).then(() => undefined), onSuccess: () => qc.invalidateQueries({ queryKey: helperKeys.memberReports(memberId) }), }) } @@ -31,8 +32,9 @@ export function useGenerateMemberReport(memberId: string) { export function useGenerateTeamReport(teamId: string) { const qc = useQueryClient() - return useMutation({ - mutationFn: () => helperClient.post(`/reports/team/${teamId}`).then(() => undefined), + return useMutation({ + mutationFn: (useLocal) => + helperClient.post(`/reports/team/${teamId}`, { uselocal: useLocal }).then(() => undefined), onSuccess: () => qc.invalidateQueries({ queryKey: helperKeys.teamReports(teamId) }), }) } diff --git a/web-client/src/features/helper/model/useReportViewModel.ts b/web-client/src/features/helper/model/useReportViewModel.ts index 445d7b4e..4946ac85 100644 --- a/web-client/src/features/helper/model/useReportViewModel.ts +++ b/web-client/src/features/helper/model/useReportViewModel.ts @@ -76,7 +76,7 @@ export function useReportViewModel() { rows, isLoading: (isTrainer && teamsQuery.isLoading) || query.isLoading, isError: query.isError, - generate: () => generate.mutate(), + generate: (useLocal?: boolean) => generate.mutate(useLocal), isGenerating: generate.isPending, generateError: generate.error, listKey, diff --git a/web-client/src/features/helper/pages/HelperPage.tsx b/web-client/src/features/helper/pages/HelperPage.tsx index d72bb279..e5add051 100644 --- a/web-client/src/features/helper/pages/HelperPage.tsx +++ b/web-client/src/features/helper/pages/HelperPage.tsx @@ -13,6 +13,7 @@ import { } from '@/components/ui/alert-dialog' import { Button } from '@/components/ui/button' import { Card, CardContent } from '@/components/ui/card' +import { Label } from '@/components/ui/label' import { PageHeader } from '@/components/ui/page-header' import { RowActionButton, RowActions } from '@/components/ui/row-action-button' import { Separator } from '@/components/ui/separator' @@ -23,6 +24,7 @@ import { SheetTitle, } from '@/components/ui/sheet' import { Skeleton } from '@/components/ui/skeleton' +import { Switch } from '@/components/ui/switch' import { serverErrorMessage } from '@/lib/server-error' import { useHelperUiStore } from '../model/helperUiStore' import { @@ -54,10 +56,11 @@ export function HelperPage() { const [generated, setGenerated] = useState(false) const [deleteError, setDeleteError] = useState(null) const [deleteTargetId, setDeleteTargetId] = useState(null) + const [useLocalLlm, setUseLocalLlm] = useState(false) const onGenerate = () => { setGenerated(false) - generate() + generate(useLocalLlm) // The result is async (the POST returns 202 with no body); confirm we kicked it off. setGenerated(true) } @@ -116,9 +119,22 @@ export function HelperPage() {

{generateError.message}

)} - +
+
+ + +
+ +