feat(media): configurar dimensiones 640x360 para noticias y 640x640 para clasificados y eventos
This commit is contained in:
parent
987fe8aef6
commit
0e9bb2365e
@ -140,7 +140,7 @@ export default async function ClasificadosPage() {
|
|||||||
const mediaObj = post.resolved_media || (typeof post.imagen_destacada_id === 'object' ? post.imagen_destacada_id : null) as MediaItem | null;
|
const mediaObj = post.resolved_media || (typeof post.imagen_destacada_id === 'object' ? post.imagen_destacada_id : null) as MediaItem | null;
|
||||||
|
|
||||||
if (mediaObj) {
|
if (mediaObj) {
|
||||||
imagenUrl = `${ENDPOINT}/storage/buckets/${mediaObj.bucket_id}/files/${mediaObj.file_id}/preview?project=${PROJECT_ID}&width=640&height=360&quality=80`;
|
imagenUrl = `${ENDPOINT}/storage/buckets/${mediaObj.bucket_id}/files/${mediaObj.file_id}/preview?project=${PROJECT_ID}&width=640&height=640&quality=80`;
|
||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
|||||||
@ -140,7 +140,7 @@ export default async function EventosPage() {
|
|||||||
const mediaObj = post.resolved_media || (typeof post.imagen_destacada_id === 'object' ? post.imagen_destacada_id : null) as MediaItem | null;
|
const mediaObj = post.resolved_media || (typeof post.imagen_destacada_id === 'object' ? post.imagen_destacada_id : null) as MediaItem | null;
|
||||||
|
|
||||||
if (mediaObj) {
|
if (mediaObj) {
|
||||||
imagenUrl = `${ENDPOINT}/storage/buckets/${mediaObj.bucket_id}/files/${mediaObj.file_id}/preview?project=${PROJECT_ID}&width=640&height=360&quality=80`;
|
imagenUrl = `${ENDPOINT}/storage/buckets/${mediaObj.bucket_id}/files/${mediaObj.file_id}/preview?project=${PROJECT_ID}&width=640&height=640&quality=80`;
|
||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
|||||||
@ -217,10 +217,14 @@ export default async function Home(props: { searchParams: Promise<{ [key: string
|
|||||||
const ENDPOINT = process.env.NEXT_PUBLIC_APPWRITE_ENDPOINT || 'https://appwrite.almeira.com.co/v1';
|
const ENDPOINT = process.env.NEXT_PUBLIC_APPWRITE_ENDPOINT || 'https://appwrite.almeira.com.co/v1';
|
||||||
let imagenUrl = post.og_image_url || null;
|
let imagenUrl = post.og_image_url || null;
|
||||||
|
|
||||||
|
const isSquare = post.tipo === 'evento' || post.tipo === 'aviso' ||
|
||||||
|
(typeof post.tipo_publicacion_id === 'object' && (post.tipo_publicacion_id.codigo === 'EVENTO' || post.tipo_publicacion_id.codigo === 'CLASIFICADO'));
|
||||||
|
const imgHeight = isSquare ? 640 : 360;
|
||||||
|
|
||||||
const mediaObj = post.resolved_media || (typeof post.imagen_destacada_id === 'object' ? post.imagen_destacada_id : null) as MediaItem | null;
|
const mediaObj = post.resolved_media || (typeof post.imagen_destacada_id === 'object' ? post.imagen_destacada_id : null) as MediaItem | null;
|
||||||
|
|
||||||
if (mediaObj) {
|
if (mediaObj) {
|
||||||
imagenUrl = `${ENDPOINT}/storage/buckets/${mediaObj.bucket_id}/files/${mediaObj.file_id}/preview?project=${PROJECT_ID}&width=640&height=360&quality=85`;
|
imagenUrl = `${ENDPOINT}/storage/buckets/${mediaObj.bucket_id}/files/${mediaObj.file_id}/preview?project=${PROJECT_ID}&width=640&height=${imgHeight}&quality=85`;
|
||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
@ -237,6 +241,7 @@ export default async function Home(props: { searchParams: Promise<{ [key: string
|
|||||||
showFooterDate={cardSettings.showFooterDate}
|
showFooterDate={cardSettings.showFooterDate}
|
||||||
showFooterButton={cardSettings.showFooterButton}
|
showFooterButton={cardSettings.showFooterButton}
|
||||||
footerText={cardSettings.footerText}
|
footerText={cardSettings.footerText}
|
||||||
|
imageAspect={isSquare ? 'aspect-square' : 'aspect-video'}
|
||||||
isAdmin={isAdmin}
|
isAdmin={isAdmin}
|
||||||
/>
|
/>
|
||||||
)
|
)
|
||||||
|
|||||||
@ -36,7 +36,9 @@ function resolveImageUrl(
|
|||||||
|
|
||||||
if (typeof post.imagen_destacada_id === 'object') {
|
if (typeof post.imagen_destacada_id === 'object') {
|
||||||
const { bucket_id, file_id } = post.imagen_destacada_id;
|
const { bucket_id, file_id } = post.imagen_destacada_id;
|
||||||
return `${endpoint}/storage/buckets/${bucket_id}/files/${file_id}/preview?project=${projectId}&width=640&height=360&quality=80`;
|
const isSquare = post.tipo === 'evento' || post.tipo === 'aviso';
|
||||||
|
const height = isSquare ? 640 : 360;
|
||||||
|
return `${endpoint}/storage/buckets/${bucket_id}/files/${file_id}/preview?project=${projectId}&width=640&height=${height}&quality=80`;
|
||||||
}
|
}
|
||||||
|
|
||||||
// If it's a string, we can't generate a valid URL because it's a document ID, not a file ID.
|
// If it's a string, we can't generate a valid URL because it's a document ID, not a file ID.
|
||||||
|
|||||||
@ -20,14 +20,17 @@ export async function processWhatsAppMessage(
|
|||||||
}
|
}
|
||||||
|
|
||||||
const systemInstruction = `
|
const systemInstruction = `
|
||||||
Eres un asistente editorial experto.
|
Eres un asistente editorial experto de Almeira Web.
|
||||||
Analiza un mensaje enviado al grupo de WhatsApp "Publicaciones Almeira".
|
Analiza los mensajes y recursos multimedia recibidos desde WhatsApp para estructurarlos como publicaciones del portal.
|
||||||
Debes estructurar el mensaje en base a lo siguiente:
|
Debes estructurar el mensaje en base a lo siguiente:
|
||||||
1. titulo: Asigna un título claro y corto.
|
1. titulo: Asigna un título claro, profesional y conciso (máx. 70 caracteres).
|
||||||
2. tipo: Determina si es "noticia" (Noticias, actualidad), "evento" (Invitaciones, programaciones), o "aviso" (Clasificados, empleos, ventas, anuncios parroquiales, etc).
|
2. tipo: Determina la categoría exacta:
|
||||||
3. seo_descripcion: Un texto máximo de 150 caracteres describiendo de qué trata.
|
- "noticia": Noticias generales, política, actualidad, comunicados y reportajes (dimensiones recomendadas de imagen: 640x360 px, relación 16:9).
|
||||||
4. contenido: El texto detallado de la publicación en HTML válido formateado (usa <p>, <strong>, listas locales si es útil) pero retén la información original importante.
|
- "evento": Invitaciones a actividades, jornadas, ferias, foros, congresos, festivales o convocatorias con fecha (dimensiones de imagen: 640x640 px, relación 1:1).
|
||||||
5. fecha_vencimiento: Si el texto indica fecha límite del evento o del aviso (Ej, "hasta el 30 de noviembre", o "el sábado"), devuélvela en formato YYYY-MM-DD. Si no tiene, omite el campo o pasa null.
|
- "aviso": Clasificados, ofertas de empleo, compra/venta, servicios profesionales, comunicados comunitarios (dimensiones de imagen: 640x640 px, relación 1:1).
|
||||||
|
3. seo_descripcion: Un resumen conciso de máximo 150 caracteres optimizado para redes y motores de búsqueda.
|
||||||
|
4. contenido: El texto detallado de la publicación en HTML válido y limpio (usa <p>, <strong>, <ul>/<li> si es apropiado), preservando nombres, fechas, contactos y enlaces originales.
|
||||||
|
5. fecha_vencimiento: Si el texto indica fecha límite del evento o del aviso (Ej. "hasta el 30 de noviembre", o "el próximo sábado"), devuélvela en formato YYYY-MM-DD. Si no aplica o es una noticia general, pasa null.
|
||||||
`;
|
`;
|
||||||
|
|
||||||
// Prepara los contenidos
|
// Prepara los contenidos
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user