feat: add public report PDF preview endpoint and update report content handling for Typst-based resumes

This commit is contained in:
Anish Sarkar 2026-04-16 22:51:36 +05:30
parent 6037058a09
commit e2cd0557a5
6 changed files with 65 additions and 9 deletions

View file

@ -18,6 +18,7 @@ import { TooltipIconButton } from "@/components/assistant-ui/tooltip-icon-button
import { GenerateImageToolUI } from "@/components/tool-ui/generate-image";
import { GeneratePodcastToolUI } from "@/components/tool-ui/generate-podcast";
import { GenerateReportToolUI } from "@/components/tool-ui/generate-report";
import { GenerateResumeToolUI } from "@/components/tool-ui/generate-resume";
const GenerateVideoPresentationToolUI = dynamic(
() =>
@ -160,6 +161,7 @@ const PublicAssistantMessage: FC = () => {
by_name: {
generate_podcast: GeneratePodcastToolUI,
generate_report: GenerateReportToolUI,
generate_resume: GenerateResumeToolUI,
generate_video_presentation: GenerateVideoPresentationToolUI,
display_image: GenerateImageToolUI,
generate_image: GenerateImageToolUI,

View file

@ -379,9 +379,9 @@ export function ReportPanelContent({
</div>
</div>
) : reportContent.content_type === "typst" ? (
<PdfViewer
pdfUrl={`${process.env.NEXT_PUBLIC_FASTAPI_BACKEND_URL}/api/v1/reports/${activeReportId}/preview`}
/>
<PdfViewer
pdfUrl={`${process.env.NEXT_PUBLIC_FASTAPI_BACKEND_URL}${shareToken ? `/api/v1/public/${shareToken}/reports/${activeReportId}/preview` : `/api/v1/reports/${activeReportId}/preview`}`}
/>
) : reportContent.content ? (
isReadOnly ? (
<div className="h-full overflow-y-auto px-5 py-4">

View file

@ -182,9 +182,10 @@ function ResumeCard({
const [thumbState, setThumbState] = useState<"loading" | "ready" | "error">("loading");
useEffect(() => {
setPdfUrl(
`${process.env.NEXT_PUBLIC_FASTAPI_BACKEND_URL}/api/v1/reports/${reportId}/preview`
);
const previewPath = shareToken
? `/api/v1/public/${shareToken}/reports/${reportId}/preview`
: `/api/v1/reports/${reportId}/preview`;
setPdfUrl(`${process.env.NEXT_PUBLIC_FASTAPI_BACKEND_URL}${previewPath}`);
if (autoOpen && isDesktop && !autoOpenedRef.current) {
autoOpenedRef.current = true;