Documento de asignaturas #155 #156

Merged
roberto.silva merged 1 commits from issue/155-documento-de-asignaturas into main 2026-03-04 17:05:49 +00:00
3 changed files with 33 additions and 8 deletions

View File

@@ -3,9 +3,15 @@
const DOCUMENT_PDF_URL =
'https://n8n.app.lci.ulsa.mx/webhook/62ca84ec-0adb-4006-aba1-32282d27d434'
const DOCUMENT_PDF_ASIGNATURA_URL =
'https://n8n.app.lci.ulsa.mx/webhook/041a68be-7568-46d0-bc08-09ded12d017d'
interface GeneratePdfParams {
plan_estudio_id: string
}
interface GeneratePdfParamsAsignatura {
asignatura_id: string
}
export async function fetchPlanPdf({
plan_estudio_id,
@@ -25,3 +31,22 @@ export async function fetchPlanPdf({
// n8n devuelve el archivo → lo tratamos como blob
return await response.blob()
}
export async function fetchAsignaturaPdf({
asignatura_id,
}: GeneratePdfParamsAsignatura): Promise<Blob> {
const response = await fetch(DOCUMENT_PDF_ASIGNATURA_URL, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({ asignatura_id }),
})
if (!response.ok) {
throw new Error('Error al generar el PDF')
}
// n8n devuelve el archivo → lo tratamos como blob
return await response.blob()
}

View File

@@ -2,7 +2,7 @@ import { createFileRoute, useParams } from '@tanstack/react-router'
import { useCallback, useEffect, useState } from 'react'
import { DocumentoSEPTab } from '@/components/asignaturas/detalle/DocumentoSEPTab'
import { fetchPlanPdf } from '@/data/api/document.api'
import { fetchAsignaturaPdf } from '@/data/api/document.api'
export const Route = createFileRoute(
'/planes/$planId/asignaturas/$asignaturaId/documento',
@@ -11,7 +11,7 @@ export const Route = createFileRoute(
})
function RouteComponent() {
const { planId } = useParams({
const { asignaturaId } = useParams({
from: '/planes/$planId/asignaturas/$asignaturaId/documento',
})
@@ -23,8 +23,8 @@ function RouteComponent() {
try {
setIsLoading(true)
const pdfBlob = await fetchPlanPdf({
plan_estudio_id: planId,
const pdfBlob = await fetchAsignaturaPdf({
asignatura_id: asignaturaId,
})
const url = window.URL.createObjectURL(pdfBlob)
@@ -38,7 +38,7 @@ function RouteComponent() {
} finally {
setIsLoading(false)
}
}, [planId])
}, [asignaturaId])
useEffect(() => {
loadPdfPreview()
@@ -49,8 +49,8 @@ function RouteComponent() {
}, [loadPdfPreview])
const handleDownload = async () => {
const pdfBlob = await fetchPlanPdf({
plan_estudio_id: planId,
const pdfBlob = await fetchAsignaturaPdf({
asignatura_id: asignaturaId,
})
const url = window.URL.createObjectURL(pdfBlob)

View File

@@ -232,7 +232,7 @@ function AsignaturaLayout() {
{ label: 'Datos', to: '' },
{ label: 'Contenido', to: 'contenido' },
{ label: 'Bibliografía', to: 'bibliografia' },
{ label: 'IA', to: 'asignaturaIa' },
{ label: 'IA', to: 'iaasignatura' },
{ label: 'Documento SEP', to: 'documento' },
{ label: 'Historial', to: 'historial' },
].map((tab) => {