Compare commits

...
2 Commits
Author SHA1 Message Date
devops 0ad74b6b70 Merge branch 'chore/product-import-flat-bucket-note' into main
Build and Push Medusa / Construir y publicar Medusa (push) Successful in 23m5s
Build and Push Medusa / Escaneo de Secretos (Gitleaks) (push) Successful in 26s
2026-09-04 13:54:31 +00:00
devops d1d007fc7d chore(commerce-backend): corregir comentario sobre carpeta de fotos importadas
El S3 file provider de Medusa descarta cualquier subcarpeta del
filename (usa solo path.parse().name + ulid, confirmado leyendo
@medusajs/file-s3/dist/services/s3-file.js) -- no existe una carpeta
import-products/ separada como decia el comentario original. El bucket
(ari-products) es plano, igual para todas las fotos del catalogo.
Confirmado en vivo con una importacion real de 3 productos.
2026-09-04 13:54:23 +00:00
@@ -22,9 +22,14 @@ import { csvRowsToObjects, parseCsv } from "../../../lib/csv";
// //
// Las fotos se descargan del origen y se re-alojan en el mismo // Las fotos se descargan del origen y se re-alojan en el mismo
// MinIO/S3 que ya usa el resto del catalogo (uploadFilesWorkflow -> // MinIO/S3 que ya usa el resto del catalogo (uploadFilesWorkflow ->
// mismo File Module Provider de medusa-config.ts, ya corre en el NAS), // mismo File Module Provider de medusa-config.ts, ya corre en el NAS).
// bajo el prefijo import-products/ para separarlas de ari-products/ // El bucket (S3_BUCKET=ari-products) es plano -- el provider de S3 de
// (subidas manuales desde el Admin). // Medusa descarta cualquier subcarpeta del filename (usa solo
// path.parse().name + ulid, confirmado leyendo
// @medusajs/file-s3/dist/services/s3-file.js), asi que no hay una
// carpeta separada real para lo importado -- queda mezclado con el
// resto de fotos del catalogo, mismo criterio de nombres unicos por
// ulid que ya usa todo el sitio.
const MAX_IMAGE_BYTES = 8 * 1024 * 1024; const MAX_IMAGE_BYTES = 8 * 1024 * 1024;
const IMAGE_FETCH_TIMEOUT_MS = 15000; const IMAGE_FETCH_TIMEOUT_MS = 15000;
@@ -164,7 +169,7 @@ export async function POST(req: MedusaRequest<{ csv: string }>, res: MedusaRespo
const { result: uploadedFiles } = await uploadFilesWorkflow(req.scope).run({ const { result: uploadedFiles } = await uploadFilesWorkflow(req.scope).run({
input: { input: {
files: downloaded.map((file, i) => ({ files: downloaded.map((file, i) => ({
filename: `import-products/${Date.now()}-${index}-${i}.${file.extension}`, filename: `${Date.now()}-${index}-${i}.${file.extension}`,
mimeType: file.mimeType, mimeType: file.mimeType,
content: file.content, content: file.content,
access: "public" as const, access: "public" as const,