Merge pull request 'Documento de asignaturas #155' (#156) from issue/155-documento-de-asignaturas into main

Reviewed-on: #156
This commit was merged in pull request #156.
This commit is contained in:
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 = const DOCUMENT_PDF_URL =
'https://n8n.app.lci.ulsa.mx/webhook/62ca84ec-0adb-4006-aba1-32282d27d434' '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 { interface GeneratePdfParams {
plan_estudio_id: string plan_estudio_id: string
} }
interface GeneratePdfParamsAsignatura {
asignatura_id: string
}
export async function fetchPlanPdf({ export async function fetchPlanPdf({
plan_estudio_id, plan_estudio_id,
@@ -25,3 +31,22 @@ export async function fetchPlanPdf({
// n8n devuelve el archivo → lo tratamos como blob // n8n devuelve el archivo → lo tratamos como blob
return await response.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 { useCallback, useEffect, useState } from 'react'
import { DocumentoSEPTab } from '@/components/asignaturas/detalle/DocumentoSEPTab' 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( export const Route = createFileRoute(
'/planes/$planId/asignaturas/$asignaturaId/documento', '/planes/$planId/asignaturas/$asignaturaId/documento',
@@ -11,7 +11,7 @@ export const Route = createFileRoute(
}) })
function RouteComponent() { function RouteComponent() {
const { planId } = useParams({ const { asignaturaId } = useParams({
from: '/planes/$planId/asignaturas/$asignaturaId/documento', from: '/planes/$planId/asignaturas/$asignaturaId/documento',
}) })
@@ -23,8 +23,8 @@ function RouteComponent() {
try { try {
setIsLoading(true) setIsLoading(true)
const pdfBlob = await fetchPlanPdf({ const pdfBlob = await fetchAsignaturaPdf({
plan_estudio_id: planId, asignatura_id: asignaturaId,
}) })
const url = window.URL.createObjectURL(pdfBlob) const url = window.URL.createObjectURL(pdfBlob)
@@ -38,7 +38,7 @@ function RouteComponent() {
} finally { } finally {
setIsLoading(false) setIsLoading(false)
} }
}, [planId]) }, [asignaturaId])
useEffect(() => { useEffect(() => {
loadPdfPreview() loadPdfPreview()
@@ -49,8 +49,8 @@ function RouteComponent() {
}, [loadPdfPreview]) }, [loadPdfPreview])
const handleDownload = async () => { const handleDownload = async () => {
const pdfBlob = await fetchPlanPdf({ const pdfBlob = await fetchAsignaturaPdf({
plan_estudio_id: planId, asignatura_id: asignaturaId,
}) })
const url = window.URL.createObjectURL(pdfBlob) const url = window.URL.createObjectURL(pdfBlob)

View File

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